Кнопка внутри панели обновления не срабатывает, в asp.net - PullRequest
3 голосов
/ 04 октября 2011
<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 Ответ

4 голосов
/ 04 октября 2011

Измените свойство ChildrenAsTriggers UpdatePanel на true.Это приведет к тому, что любые обратные вызовы, инициированные дочерними элементами UpdatePanel, обновят его содержимое.

EDIT : только что поняли, что btn_Add является вложенным элементом управления, поэтому вам придется явно вызвать егокак UpdatePanel Trigger.Добавьте следующее к вашей разметке UpdatePanel после ContentTemplate:

<Triggers>
    <asp:AsyncPostBackTrigger ControlID="btn_Add" /> 
</Triggers>

EDIT # 2 : чтобы не допустить закрытия модального всплывающего окна при асинхронной обратной передаче, переместите UpdatePanel внутрьпанель, указанная в PopupControlID ModalPopupExtender:

<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>
...