使用客户端功能创建复合控件

时间:2010-11-07 17:08:31

标签: c# javascript asp.net ajax

我想开发复合控件,其中一些工作将在客户端执行。 为此,我正在实现IScriptControl。

ScriptReference指向带有客户端对象的脚本文件。

假设我希望它具有Listview(html select)控件,onselect将根据所选值运行javascript函数。

我不能动态创建控件是客户端js,因为控件在设计模式下有UI所以我必须在服务器端创建选择控件(我在覆盖void渲染中创建它)

我的问题是如何以及在何处为选择分配onselect事件。

更新
也许我应该将select的id作为属性添加到ScriptControlDescriptor,然后在客户端控制中检索此id并将所需的处理程序附加到事件中?

3 个答案:

答案 0 :(得分:1)

使用对象的Attributes集合,您可以添加所需的onselect属性。只需致电HtmlSelect.Attributes.Add("onselect", "functionYouWantToCall();");

为了澄清,如果在C#中在服务器端的Render期间创建HTML Select,则上面的行用于注册onselect客户端事件以调用functionYouWantToCall() java脚本方法。

有许多方法可以在运行时将JavaScript函数添加到ASP.NET页面,或者包含静态JS文件。有关详细信息,请查看文档here

在ASPX页面中,一旦添加到页面,控件就可以访问Page属性,这样您就可以访问Page,从而访问ClientScript属性。

同样,您可以在DLL中嵌入JS文件,并使用ClientScript.RegisterClientScriptResource方法自动为IIS提供服务。

答案 1 :(得分:0)

为什么不让你的控件创建javascript并拥有控制寄存器? 这是我在评论中添加的链接。它被称为从ASP.NET服务器控件注入客户端脚本     - http://msdn.microsoft.com/en-us/library/aa478975.aspx

答案 2 :(得分:0)

这里讨论一个类似的主题..如果你有兴趣的话 http://able2know.org/topic/2802-1