Кнопка внутри панели обновления не срабатывает, в asp.net

#c# #asp.net #ajax #asp.net-ajax #ajaxcontroltoolkit

#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. В вашем диспетчере сценариев добавьте это: asp:ScriptManager ID="ScriptManager1" runat="server" EnablePartialRendering="false" таким образом, мы получим больше информации об ошибке

2. Также установите точку останова в btn_Add_Click и посмотрите, срабатывает ли она вообще. Я думаю, что эта ошибка недостаточно конкретна, чтобы найти основную причину. установите для EnablePartialRendering значение false, чтобы получить более подробную информацию.

3. Она выполняется. после того, как я добавил <Триггеры>

4. У вас где-нибудь есть проверка? Вы пробовали настроить CausesValidation="true" , чтобы проверить, является ли проверка причиной?

Ответ №1:

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

РЕДАКТИРОВАТЬ: только что понял, что btn_Add это вложенный элемент управления, поэтому вам придется явно вызывать его как UpdatePanel Trigger . Добавьте следующее в разметку UpdatePanel после ContentTemplate:

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

РЕДАКТИРОВАТЬ # 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>
  

Комментарии:

1. Ошибка: исключение Sys.InvalidOperationException: обработчик не был добавлен с помощью метода Sys.UI.DomEvent.AddHandler. Должен ли я добавить <asp:AsyncPostBackTrigger ControlID=»btnUpdate_Click» /> также для щелчка

2. Хм, я подозреваю, что проблема вызвана наличием кнопки отмены ModalPopupExtender в UpdatePanel. Можете ли вы удалить CancelControlID="btnCancel" из своего ModalPopupExtender и посмотреть, сохраняется ли ошибка?

3. Это работает, но когда я нажимаю добавить его, добавьте выбранный элемент во 2-е окно списка и закроет всплывающее окно, и когда я снова открою его, элемент добавить остается, и каждый раз, когда я нажимаю добавить, всплывающее окно закрывается, когда я снова открываю значения, все еще там

4. Хорошо, каково ожидаемое поведение?

5. После добавления элементов в список с помощью кнопки добавления я должен нажать кнопку обновления, но всплывающее окно закрывается сразу после нажатия кнопки добавления. Я хочу, чтобы всплывающее окно было открыто даже после нажатия кнопки добавления