我已经在我的asp.net应用程序中使用jquery ajax动态加载了一个用户控件。
除了用户控件加载后,页面上的asp.net链接按钮没有触发click事件,所以每件事都运行正常。链接按钮未动态加载。
请帮我解决这个问题。
谢谢
Shibin V.M
html标记
注销
更多
js web方法调用函数
function callRefinepopUpAjax(type, id)
{
var panel_popup_layer = $('#id');
var val;
if (Serach.hasOwnProperty(type))
val = Serach[type];
$.ajax({
type: "POST",
url: "../ProfileSearchService.asmx/LoadRefinePopUp",
data: "{Type:'" + type + "',Value:'" + val + "'}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(msg) {
$(panel_popup_layer).html(msg.d);
setUp();
}
});
}
网络方法
public string LoadRefinePopUp(string Type, string Value)
{
Page page = new Page();
UserControl ctl = new UserControl();
ArrayList list = new ArrayList();
list.Add(Value);
Context.Items["WebForm1List"] = list;
try
{
ctl =
(UserControl)page.LoadControl("~//popup" + Type + ".ascx");
HtmlForm form = new HtmlForm();
form.Controls.Add(ctl);
page.Controls.Add(form);
StringWriter textWriter = new StringWriter();
HttpContext.Current.Server.Execute(page, textWriter, false);
return CleanHtml(textWriter.ToString());
}
catch (Exception ex)
{
return ex.toString();
}
}
答案 0 :(得分:0)
你可以这样试试......
注意:这是一个例子......如果你指定你的用户控件(代码),那么它将是有用的....
假设类型的名称遵循文件名,您可以将其强类型为该类型,例如,
var myUserControl = Page.LoadControl("~/View/EditScheduleProgram.ascx") as EditScheduleProgram;
然后您可以访问由该类型公开的任何自定义(或特定)事件,但不能访问Control
,因此,
myUserControl.MyEvent += MyEventHandler;
答案 1 :(得分:0)
我知道这个问题是在5年前提出来的,但是我今天来了,并且遇到同样的问题。也许我的回答可以帮助任何人。基于this article,您无法以这种方式创建用户控件时触发单击事件。然后,您必须依赖从客户端处理的按钮。如果您尝试不动态地将用户控件添加到页面中,则会在页面加载时触发事件(check here)