作为创建自定义控件的起点,我想创建一个只显示数字的控件。如果我们想象.ascx文件除了文字控件之外什么都不包含,并且后面的代码将值设置为1。
然后我希望能够做myControl.increment(); 这将运行一些增加文字控件值的javascript。
我可以在页面中注入一个javascript,例如伪代码:
page_load
{
scriptything.register("function increment(x) { $('#myLiteral').increment(); });
}
或者其他东西,但那不是myControl.increment,只会是increment()。页面上有多个控件会搞砸它。
任何人都知道我如何实现将javascript与自定义控件耦合的目标?我问不可能吗?
答案 0 :(得分:0)
是的,您希望将这样的JavaScript类开发视为一个示例(还有其他示例):http://www.howtocreate.co.uk/tutorials/javascript/objects
您可能真的想要开发ASP.NET AJAX控件,它集成了服务器端控件和AJAX功能。我开发了一些,我写了一些关于这个主题的文章:
对于JQuery,请使用:
HTH。
答案 1 :(得分:0)
很有可能。
我有一个CalledCustomControlLibrary类。
它包含几个包含图像和脚本的文件夹。您可以使用[assemply: WebResource]
IE
[assembly: WebResource("CustomControlLibrary.LeftRight.local_img.leftArrow.jpg", "img/jpg")]
[assembly: WebResource("CustomControlLibrary.LeftRight.local_img.rightArrow.jpg", "img/jpg")]
[assembly: WebResource("CustomControlLibrary.LeftRight.local_js.leftright.js", "application/javascript")]
[assembly: WebResource("CustomControlLibrary.global_js.jquery-1.3.2.js", "application/javascript")]
[assembly: WebResource("CustomControlLibrary.global_js.mousehold.js", "application/javascript")]
然后在类的onload事件中,您可以注册客户端脚本,如:
string tsJQueryJS = Page.ClientScript.GetWebResourceUrl(this.GetType(), "CustomControlLibrary.global_js.jquery-1.3.2.js") ;
string tsMousehold = Page.ClientScript.GetWebResourceUrl(this.GetType(), "CustomControlLibrary.global_js.mousehold.js");
string tsLeftRightJS = Page.ClientScript.GetWebResourceUrl(this.GetType(), "CustomControlLibrary.LeftRight.local_js.leftright.js");
if (!Page.ClientScript.IsClientScriptIncludeRegistered("JQuery" )) { Page.ClientScript.RegisterClientScriptInclude("JQuery", tsJQueryJS); }
if (!Page.ClientScript.IsClientScriptIncludeRegistered("Mousehold")) { Page.ClientScript.RegisterClientScriptInclude("Mousehold", tsMousehold); }
if (!Page.ClientScript.IsClientScriptIncludeRegistered("LefRightJS")) { Page.ClientScript.RegisterClientScriptInclude("LeftRightJS", tsLeftRightJS); }
整个控制只在课堂上进行。它继承了WebControl和IPOstBackDataHandler。此控件特别适用于具有左右箭头按钮的控件,并根据按住按钮增加或减少文本框中的数值。