在asp.net中未触发更新面板内的按钮

时间:2011-10-04 15:50:33

标签: c# asp.net ajax asp.net-ajax ajaxcontroltoolkit

<asp:ModalPopupExtender ID="MPE_EditGroup" runat="server" TargetControlID="btnShowPopup" PopupControlID="pnlpopup" CancelControlID="btnCancel" />
<asp:ToolkitScriptManager ID="ScriptManager1" runat="server" />
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="false">
    <ContentTemplate>
        <asp:Panel ID="pnlpopup" runat="server">
            <asp:ListBox ID="lst_allmembers" DataValueField="FirstName" runat="server" />                       
            <asp:Button ID="btn_Add" runat="server" Text="Add" OnClick="btn_Add_Click" /><asp:ListBox ID="lst_grpmembers" runat="server" />
            <asp:Button ID="btn_remove" runat="server" Text="Remove" />
            <asp:Button ID="btnUpdate" CommandName="Update" runat="server" Text="Update" OnClick="btnUpdate_Click" />
            <asp:Button ID="btnCancel" runat="server" Text="Cancel" /></asp:Panel>
    </ContentTemplate>
</asp:UpdatePanel>

添加按钮有一个事件OnClick =“btn_Add_Click”

  protected void btn_Add_Click(object sender, EventArgs e)
  {
        lst_grpmembers.Items.Add(lst_allmembers.SelectedItem.Text);
             }

事件未触发,当我点击添加按钮时没有任何反应。在我添加更新面板之前,更新按钮工作正常现在只有取消按钮关闭弹出窗口弹出窗口内没有其他按钮工作 如何触发事件。

1 个答案:

答案 0 :(得分:4)

将UpdatePanel的ChildrenAsTriggers属性更改为true。这将导致UpdatePanel的子元素触发的任何回发更新其内容。

编辑:刚刚意识到btn_Add是一个嵌套控件,因此您必须明确地将其称为UpdatePanel Trigger。在ContentTemplate:

之后,将以下内容添加到UpdatePanel标记中
<Triggers>
    <asp:AsyncPostBackTrigger ControlID="btn_Add" /> 
</Triggers>

编辑#2 :为了防止模式弹出窗口在发生异步回发时关闭,请在ModalPopupExtender的PopupControlID指定的面板中移动UpdatePanel

<asp:Panel ID="pnlpopup" runat="server">
    <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="true">
        <ContentTemplate>
            <asp:ListBox ID="lst_allmembers" DataValueField="FirstName" runat="server" />
            <asp:Button ID="btn_Add" runat="server" Text="Add" OnClick="btn_Add_Click" />
            <asp:ListBox ID="lst_grpmembers" runat="server" />
            <asp:Button ID="btn_remove" runat="server" Text="Remove" />
            <asp:Button ID="btnUpdate" CommandName="Update" runat="server" Text="Update" OnClick="btnUpdate_Click" />
             <asp:Button ID="btnCancel" runat="server" Text="Cancel" />
        </ContentTemplate>
    </asp:UpdatePanel>
</asp:Panel>