updatepanel问题中的usercontrol

时间:2011-04-01 00:24:22

标签: c# asp.net

我在updatepanel中有一个usercontrol。当我点击某个按钮时,这个用户控件将是 加载。而usercontrol本身也有一个按钮。问题是, 永远不会执行后面的usercontrol代码,当单击按钮时,usercontrol 消失。

我知道这是一个常见的问题。但我还没有找到一个很好的详细解决方案。

我很感激。

2 个答案:

答案 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