我想开发复合控件,其中一些工作将在客户端执行。 为此,我正在实现IScriptControl。
ScriptReference指向带有客户端对象的脚本文件。
假设我希望它具有Listview(html select)控件,onselect将根据所选值运行javascript函数。
我不能动态创建控件是客户端js,因为控件在设计模式下有UI所以我必须在服务器端创建选择控件(我在覆盖void渲染中创建它)
我的问题是如何以及在何处为选择分配onselect事件。
更新
也许我应该将select的id作为属性添加到ScriptControlDescriptor,然后在客户端控制中检索此id并将所需的处理程序附加到事件中?
答案 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