asp.net – 将服务器端事件添加到扩展程序控件
发布时间:2020-12-16 06:55:44 所属栏目:asp.Net 来源:网络整理
导读:我有一个扩展程序控件,在用户输入完成后500ms引发文本框的OnTextChanged事件.这个问题是当文本框失去焦点时会引发OnTextChanged,这会导致问题(因为回发). 我想做的是给扩展器控制它自己的服务器端事件(比如OnDelayedSubmit),所以我可以单独处理它.该事件将起
我有一个扩展程序控件,在用户输入完成后500ms引发文本框的OnTextChanged事件.这个问题是当文本框失去焦点时会引发OnTextChanged,这会导致问题(因为回发).
我想做的是给扩展器控制它自己的服务器端事件(比如OnDelayedSubmit),所以我可以单独处理它.该事件将起源于扩展器控件的行为脚本(在500ms延迟之后),因此将__doPostBack置于onchanged中是不可取的. 任何人都可以阐明如何解决这个问题吗? 解决方法
在充分阅读了扩展程序控件和
JavaScript之后,我拼凑了一个迄今为止似乎正在运行的解决方案.
主要技巧是从服务器端获取必要的回发代码到客户端行为脚本.我通过使用ExtenderControlProperty(在控件的OnPreRender函数中设置),然后在行为脚本中进行评估来完成此操作.剩下的就是基本的事件处理. 所以现在我的扩展器控件的.cs文件看起来像这样: public class DelayedSubmitExtender : ExtenderControlBase,IPostBackEventHandler { // This is where we'll give the behavior script the necessary code for the // postback event protected override void OnPreRender(EventArgs e) { string postback = Page.ClientScript.GetPostBackEventReference(this,"DelayedSubmit") + ";"; PostBackEvent = postback; } // This property matches up with a pair of get & set functions in the behavior script [ExtenderControlProperty] public string PostBackEvent { get { return GetPropertyValue<string>("PostBackEvent",""); } set { SetPropertyValue<string>("PostBackEvent",value); } } // The event handling stuff public event EventHandler Submit; // Our event protected void OnSubmit(EventArgs e) // Called to raise the event { if (Submit != null) { Submit(this,e); } } public void RaisePostBackEvent(string eventArgument) // From IPostBackEventHandler { if (eventArgument == "DelayedSubmit") { OnSubmit(new EventArgs()); } } } 我的行为脚本看起来像这样: DelayedSubmitBehavior = function(element) { DelayedSubmitBehavior.initializeBase(this,[element]); this._postBackEvent = null; // Stores the script required for the postback } DelayedSubmitBehavior.prototype = { // Delayed submit code removed for brevity,but normally this would be where // initialize,dispose,and client-side event handlers would go // This is the client-side part of the PostBackEvent property get_PostBackEvent: function() { return this._postBackEvent; },set_PostBackEvent: function(value) { this._postBackEvent = value; } // This is the client-side event handler where the postback is initiated from _onTimerTick: function(sender,eventArgs) { // The following line evaluates the string var as javascript,// which will cause the desired postback eval(this._postBackEvent); } } 现在,服务器端事件的处理方式与处理任何其他控件上的事件的方式相同. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc – Orchard CMS:退出(注销)确认页面
- asp.net-mvc-4 – ViewModels或ViewBag?
- 在ASP.NET上启动维护流程的最佳实践是什么
- asp.net-mvc – 具有嵌套视图模型和Knockout的ASP.NET MVC
- asp.net-mvc – 提供DDD,但需要一些其优点
- ..net学习群
- asp.net-mvc – 路由在Asp.net Mvc 4和Web Api
- asp.net – 在几个网页(.cshtml文件)中使用Razor @function
- asp.net-mvc – DisplayFor和ValueFor之间的区别
- asp.net – VS2010中每个发布配置文件的不同连接字符串
推荐文章
站长推荐
- ASP.NET requestValidation 4.5和WIF
- 我可以在ASP.NET中获取浏览器时区,还是依靠JS操作
- 当从页面导航时页面加载错误时,asp.net – signa
- asp.net – 如何在Quartz.Net中处理应用程序关闭
- 在asp.net中使用cookie mvc c#
- asp.net – SqlException(0x80131904):第28行:
- asp.net – sitecore模板标准值布局不更新所有项
- asp.net-mvc – 如何在ASP.NET MVC中使用queryst
- nuget-package – 如何在asp.net 5应用程序中添加
- asp.net-mvc – 在MVC项目中放置一个简单的类?
热点阅读