快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-21

一、增加EnhancedListBox的客户端功能

为了使用客户端代码实现EnhancedListBox中项的重排序,你必须使用 JavaScript脚本,并且要把它们依附到EnhancedListBox的两个按钮上。为此, 我建议你使用“往后考虑”的方法。就象编写一个老式的ASP以前的Web页面,首 先编写一些生成HTML文件的JavaScript。为此,最好的方法是运行该控件,然后 观察其源码并把它的HTML代码复制到一个编辑器,再添加JavaScript。列表2( 见下载源代码)展示了你需要添加到你的控件中的JavaScript的原始形式。然后 ,借助于StringBuilder/StringWriter技术(参考源码列表3),该控件构建这部 分代码。该JavaScript代码由两部分功能组成:接收一个HTML控件(在本例中是 一个<select>控件);使用选择索引并且在列表中上下移动它(基本上与我在 本文开始我使用服务器代码向你展示的一样)。现在,你要理解,你把该 JavaScript代码添加到Web控件的何处。为了实现在一个Web表单上有多个 EnhancedListBox控件的情况下,该JavaScript代码不会被重复复制,你需要使 用Page.ClientScript对象的RegisterClientScriptBlock方法输出它。

要使这个方法起作用,你必须在重载的OnInit事件中调用它(见源码中列表4) 。

最后,为使按钮正确工作,你需要把添加的客户端方法依附到其上。在列表1 中的代码中,你会看到引用了一个方法RenderButtons。尽管我没有把该代码在 此列出(请参考本文相应源码),但是它能够使用我在以前文章中介绍的技术生 成按钮。当时,在生成实际HTML标签的之前,标签属性是使用AddAttribute方法 以栈式存放的。在此,你使用一样的技术把客户端方法依附到你的按钮。

string s_MoveUp = "MoveItemUp(document.all." +this.ClientID + ");
output.AddAttribute(HtmlTextWriterAttribute.OnClick, s_MoveUp);

记住,MoveItemUp是你已经编写成功的JavaScript函数之一。在生成用于排 序的按钮之前,该代码将以堆栈存放这些JavaScript命令。对于向下(down)按 钮,你使用一样的技术。注意,我使用ClientId代表该生成后的控件的ID;但是 ,在这个控件位于一个复合控件内部时,这个属性要考虑使用父控件的名字。

现在,你可以成功地把该控件应用于一个Web表单中。你可以使用与你操作一 个标准ListBox控件一样的方式在其上添加一些项。

事实上,这完全是一个投放位置占位符(或ASP.NET ListBox控件)。当你使 用重排序按钮时,你将看到列表中的项相应地改变顺序。现在让我们先记下这个 问题。如果你把一个按钮拖动到一个Web表单上(不需要为之添加代码)并执行一 个回寄,你猜会发生什么呢?完全与我以前描述的一样;任何你使用重排序按钮 作的重排序改变都将恢复到在最近一次回寄之前该控件看上去的状态。因此,让 我们修改一下这个问题。

首先,我再添加一些JavaScript(源码列表5)。注意,这部分代码被添加到 重载的OnInit方法中并且使用StringBuilder/StringWriter技术进行构建;而且 ,这个JavaScript方法的名字是BuildItemList。这个函数负责构建列表框完整 内容的一个字符串描述并且把该串放到要传递到该函数的一个HTML元素的value 属性中。你可以把这看作是列表内容的一种串行化。该串行化的输出风格会根据 你自己的设计的不同而有所不同。调用这个JavaScript函数需要依附到该按钮上 的其它代码。

string s_MoveUp = "MoveItemUp(document.all." + this.ClientID + "); ";
string s_BuildItemList ="BuildItemList(document.all." + this.ClientID +
",document.all.__" + this.ClientID + "); ";
output.AddAttribute(HtmlTextWriterAttribute.Onclick,MoveUp + "

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号