快速业务通道

C#+ASP.NET 2.0定制复合组件之高级篇

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-21
表内容(因此,包括隐藏的文本域)。 列表6向你展示如何分析该隐藏的文本域的内容并且把Item重新添加到Item集合 中。注意,你是怎样调用基类实现的。

最后,在你第一次生成控件时,你必须构建这个隐藏的文本域,以防在任何 重排序前发生页面回寄。Render方法的最后一行是:

output.Write("<script language=''javascript''>BuildItemList (document.all." + this.ClientID +",document.all.__" + this.ClientID +");</script>");

你可以在列表1的最后看到这一点。

现在,你可以使用EnhancedListBox控件来重排序一些项,回寄,并且确保在 重新生成页面前,控件的服务器存储与在客户端被改变的客户端存储完全同步。 因此,现在让我们使用相同的技术来构建一个复合控件ListMover。

三、构建复合控件—ListMover

这个ListMover控件包含两个EnhancedListBox控件,还有一些按钮用于在两 个列表之间来回移动项。借助于这些复合控件构建技术,你可以学习如何创建子 控件并且使用一些HTML生成它们,最终的控件看上去如图2所示。对于这个控件 ,你要注意的是某些事情必须发生的位置。

C#+ASP.NET 2.0定制复合组件之高级篇

图2.这个ListMover控件提供了一种标准方式让用户在两个列表间移动项。

首先,借助于与在以前的控件中相同的技术,你必须把在这个控件中需要的 JavaScript代码添加到OnInit事件的重载版本中。列表7显示了你需要的 JavaScript代码。如你在上一个控件中所做的一样,你也是使用JavaScript存取 一个ListBox(<select>元素)中的元素。而且,我已经编制了函数分别实现把 项添加到一个列表,从一个列表中删除项,以及从一个列表中添加或删除所有项 。

我已经进行了功能的分离,而不是创建单个“move”方法;这样以来,我可 以实现基于属性设置而使得从一个列表中删除项成为可选的。毫无疑问,这可以 使最终的控件更为强壮些,但是我在本文中不再分析这些代码。还应该注意,就 象在前面控件中一样,我也添加了一个BuildItemList方法。

现在,你需要把这一客户端代码依附到复合控件的按钮中。你可以在 CreateChildControls方法的最后完成这一点;并且,在此时,完成子控件的初 始化和构建控件集合。在此,我仅向你展示相应于一个按钮的代码(另外的按钮 代码与此类似,省略)。

string s_AddToLeft = "AddSelectedItemToList(document.all." +
this.lstItemsOnRight.ClientID + ", document.all."
+ this.lstItemsOnLeft.ClientID + ", " +
(this.AllowDuplicatesOnLeft ? "true" : "false") + "); ";
string s_RemoveFromRight = "RemoveSelectedItemFromList(document.all." +
this.lstItemsOnRight.ClientID + "); ";
string s_BuildItemList = "BuildItemList(document.all." +
this.lstItemsOnRight.ClientID + ", document.all.__" + lstItemsOnRight.ClientID + "); " + "BuildItemList(document.all." + this.lstItemsOnLeft.ClientID + ", document.all.__"
+ lstItemsOnLeft.ClientID + "); ";
this.btnAdd.Attributes.Add("onclick", s_AddToLeft
+ " " + s_RemoveFromRight + " " + s_BuildItemList
+ " return false");

注意,我实现了在以前的控件中同样的工作。我把JavaScript函数调用构建 成一字符串并且把它们依附到一个按钮上。主要区别在于,既然这是一个包含其 它控件的复合控件,那么你可能使用把代码添加到onclick事件的 Attributes.Add方法,这与在一个生成控件中把它放到一个栈上的方

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号