我在updatepanel中有一个usercontrol。当我点击某个按钮时,这个用户控件将是 加载。而usercontrol本身也有一个按钮。问题是, 永远不会执行后面的usercontrol代码,当单击按钮时,usercontrol 消失。
我知道这是一个常见的问题。但我还没有找到一个很好的详细解决方案。
我很感激。
答案 0 :(得分:2)
在您的用户控件中,只需使用这样的标准HTML按钮:
<input type="button" id="myButton" onclick="clickTheButton();" value="Click Me"/>
这会调用javascript方法“clickTheButton”,它看起来像这样:
<script type="text/javascript">
function clickTheButton() {
var Sender = window.event.srcElement;
//here you can go gather any other values that you need to support the post back
var PostBackData = textboxCity.value + "|" + selectState.value
if(confirm("are you sure?"))
{
__doPostBack(Sender.ID, PostBackData)
}
}
</script>
所以现在你要从Javascript调用回发,识别Sender Control和命令参数。这些值作为__EventTarget和__EventArgument以post回传递,并且可以从页面加载中的httpRequest获得,如:
protected void Page_Load(object sender, EventArgs e)
{
string controlName = Request.Params.Get("__EVENTTARGET");
string[] commandArguments = Request.Params.Get("__EVENTARGUMENT").split('|')
}
一旦你在页面加载中使用你积累到commandArguments中的任何值,你应该能够调用你想要的任何其他方法。
这应该让你指向正确的方向。
干杯,
CEC
答案 1 :(得分:1)
在update-panel中动态加载用户控件很棘手。
最佳解决方案是将其保存在ViewState Here is a tutorial and sample application。
中