Asp.net 从ajax在自定义服务器控件上引发事件?
我有一个自定义服务器控件,它被添加到许多不同的asp.net页面(它生成一个blueimp jquery文件上传插件) 如何从javascript/ajax在该服务器控件上引发事件?还是来自http处理程序? 在jquery文件上传使用ajax将一些文件发布到HTTP处理程序之后,我想在该控件上引发一个OnFileUploaded事件 编辑-除了Dalorzo的答案外: 我使用了@Dalorzo编写的代码。 然后我不得不像这样发回我的控制对象:Asp.net 从ajax在自定义服务器控件上引发事件?,asp.net,ajax,events,custom-controls,custom-server-controls,Asp.net,Ajax,Events,Custom Controls,Custom Server Controls,我有一个自定义服务器控件,它被添加到许多不同的asp.net页面(它生成一个blueimp jquery文件上传插件) 如何从javascript/ajax在该服务器控件上引发事件?还是来自http处理程序? 在jquery文件上传使用ajax将一些文件发布到HTTP处理程序之后,我想在该控件上引发一个OnFileUploaded事件 编辑-除了Dalorzo的答案外: 我使用了@Dalorzo编写的代码。 然后我不得不像这样发回我的控制对象: myctrlPostBackEventRefere
myctrlPostBackEventReference = Page.ClientScript.GetPostBackEventReference(myCtrl, "");
ScriptManager.RegisterStartupScript(Page, Page.GetType(), "initMyClientVariable", "var postBackEventReference=\"" + myctrlPostBackEventReference + "\";", true);
在我的javascript文件中,我添加了:
eval(postBackEventReference)
执行它
然后我仍然有一个问题,我想阻止完整的页面呈现,所以我使用了相同的方法,但我发布回一个“虚拟”updatepanel作为目标。更新面板引发了所需控件上的事件(我已将所需控件id作为_事件参数(GetPostBackEventReference的第二个参数)发送)用于更新面板以区分实际引发的事件。您需要实现
IPostaBackEventHandler
和/或IScriptControl
类似的功能:
[ToolboxData("<{0}:ComboBox runat=server></{0}:ComboBox>")]
public class ComboBox : DropDownList, IScriptControl, IPostBackEventHandler
{
如果我妻子没有杀了我,我稍后会回来提供更多细节:DThank you,但我不想回发,应该通过ajax或jquery插件将文件发送到的http处理程序来完成:(
// Defines the Change event.
public event EventHandler Change;
//Invoke delegates event Change.
protected virtual void OnChange(EventArgs e) {
if (Change != null) {
Change(this, e);
}
}
// Implements IPostBackEventHandler that raises the change events.
public void RaisePostBackEvent(string eventArgument){
OnChange(new EventArgs());
}