ModalPopupExtender, вызывающий .Show(), не работает

Я использую Visual Studio 2010, а для базы данных использую Entity Framework 4.

На моей странице у меня есть 3 вкладки, а на второй вкладке я использовал представление сетки для отображения сведений о сотруднике. В этом представлении сетки есть 2 кнопки изображения: одна для удаления, другая для редактирования. Я хочу открывать всплывающее окно всякий раз, когда я нажимаю кнопку «Редактировать изображение».

Проблемы 1. Всплывающее окно появляется только на секунду. 2. Возможность получить индекс строки представления сетки. Но никакое значение не передается в другое текстовое поле, оно показывает нулевое значение, т.е. name0.Text = ""

На моей странице .aspx у меня есть следующее

Для кнопки изображения

<asp:ImageButton ID="edit" runat="server" CommandArgument='<%# Bind("EmpID")%>' CommandName="edituser" ImageUrl="image/images.jpg" ToolTip="Edit User Details"  OnClick="EditUser_Clicked"> </asp:ImageButton>

Для ModalPopupExtender

<asp:ToolkitScriptManager ID="Toolkitmgr" runat="server"></asp:ToolkitScriptManager>
         <asp:HiddenField ID="EmpID" runat="server" 
             onvaluechanged="EmpID_ValueChanged"/>
         <asp:ModalPopupExtender ID="mpedit" DropShadow="true" BackgroundCssClass="modalBackground"
            PopupControlID="pnedit"  CancelControlID="btnCancel"
            runat="server" TargetControlID="EmpID"></asp:ModalPopupExtender> 
          <asp:Panel runat="server" ID="pnedit" CssClass="modalPopup" Style="display: block;width:525px">

         ***Some Code***

         </asp:Panel>

В коде на стороне сервера для события EditUser_Clicked у меня есть следующее:

 protected void EditUser_Clicked(object sender, EventArgs e)
    {
        ImageButton btndetails = sender as ImageButton;
        GridViewRow row = (GridViewRow)btndetails.NamingContainer;
        lblId.Text = GridView1.DataKeys[row.RowIndex].Value.ToString(); 
        name0.Text = row.Cells[1].Text;
        desig0.Text = row.Cells[2].Text;
        dob0.Text = row.Cells[3].Text;
        email0.Text = row.Cells[4].Text;
        country0.Text = row.Cells[5].Text;
        city0.Text = row.Cells[6].Text;
        add0.Text = row.Cells[7].Text;
        hq0.Text = row.Cells[8].Text;
        rbtnListGender0.Text = row.Cells[9].Text;
        mobno0.Text = row.Cells[10].Text;
        this.mpedit.Show();

    }

Код работает без ошибок, но модальное всплывающее окно не отображается. Пожалуйста, помогите мне найти мою ошибку.


person Kusum    schedule 31.05.2016    source источник
comment
попробуйте поместить свой код разметки, т.е. вашу панель внутри UpdatePanel.   -  person Manish Goswami    schedule 31.05.2016
comment
@ManishGoswami Я также пытался использовать UpdatePanel.   -  person Kusum    schedule 31.05.2016


Ответы (2)


Существует 3 способа использования модального всплывающего окна с помощью панели обновлений. Попробуйте любой из них.

  1. Модальное всплывающее окно с UpdatePanel внутри PopupPanel

            <div style="background-color: White">
                <asp:Button runat="server" ID="button4" Text="Launch Modal  Popup1" />
                <asp:Panel runat="server" ID="modalPanel3" Style="display: none">
                    <asp:UpdatePanel runat="server" ID="updatePanel3">
                        <ContentTemplate>
                            <asp:Label runat="server" ID="label4" Text="Label in UpdatePanel"></asp:Label>
                            <asp:Button runat="server" ID="Button5" Text="Click to Cause postback" OnClick="Button5_Click" />
                        </ContentTemplate>
                    </asp:UpdatePanel>
                    <asp:Button runat="server" ID="Button6" Text="OK" />
                    <asp:LinkButton runat="server" ID="LinkButton1" Text="Cancel" />
                </asp:Panel>
                <ajaxToolkit:ModalPopupExtender runat="server" ID="modalPopupExtender3" TargetControlID="button4"
                    PopupControlID="modalPanel3" OkControlID="Button6" CancelControlID="LinkButton1"
                    BackgroundCssClass="modalBackground">
                </ajaxToolkit:ModalPopupExtender>
            </div>
    

2. Панель обновлений, содержащая ModalPopup и связанную с ней PopupPanel внутри нее.

 <asp:UpdatePanel runat="server" ID="updatePanel2" UpdateMode="Conditional" ChildrenAsTriggers="true">
                <ContentTemplate>
                    <asp:Button runat="server" ID="button2" Text="Launch Modal Popup2" />
                    <asp:Panel runat="server" ID="modalPanel2" BackColor="AliceBlue" Style="display: none">
                        <asp:Label runat="server" ID="label5" Text="Label in UpdatePanel"></asp:Label>
                        <asp:Button runat="server" ID="postbackBtn" Text="Click to Cause postback" OnClick="postbackBtn_Click" /><br />
                        <asp:Button runat="server" ID="cancelBtn2" Text="OK" />
                        <asp:LinkButton runat="server" ID="okBtn2" Text="Cancel" />
                    </asp:Panel>
                    <ajaxToolkit:ModalPopupExtender runat="server" ID="modalPopupExtender2" TargetControlID="button2"
                        PopupControlID="modalPanel2" OkControlID="okBtn2" CancelControlID="cancelBtn2"
                        BackgroundCssClass="modalBackground">
                    </ajaxToolkit:ModalPopupExtender>
                </ContentTemplate>
            </asp:UpdatePanel>

3. Панель обновлений, содержащая ModalPopup; его PopupPanel имеет внутри него UpdatePanel

   <asp:UpdatePanel runat="server" ID="outerUpdatePanel" UpdateMode="Conditional" ChildrenAsTriggers="false">
                <Triggers>
                    <asp:AsyncPostBackTrigger ControlID="outerPanelTrigger" />
                </Triggers>
                <ContentTemplate>
                    <asp:Button runat="server" ID="outerPanelTrigger" Text="OuterPanelTrigger" /><br />
                    <br />
                    <asp:Button runat="server" ID="button1" Text="Launch Modal Popup3" />
                    <asp:Panel runat="server" ID="modalPanel1" BackColor="Pink" Style="display: none">
                        <asp:UpdatePanel runat="server" ID="updatePanel1" ChildrenAsTriggers="true" UpdateMode="Conditional">
                            <ContentTemplate>
                                <asp:Label runat="server" ID="label1" Text="Label in UpdatePanel"></asp:Label>
                                <asp:Button runat="server" ID="updateLabel" OnClick="updateLabel_Click" Text="Click to Cause postback" />
                            </ContentTemplate>
                        </asp:UpdatePanel>
                        <asp:Button runat="server" ID="okBtn" Text="OK" />
                        <asp:LinkButton runat="server" ID="cancelBtn" Text="Cancel" />
                    </asp:Panel>
                    <ajaxToolkit:ModalPopupExtender runat="server" ID="modalPopupExtender1" TargetControlID="button1"
                        PopupControlID="modalPanel1" OkControlID="okBtn" CancelControlID="cancelBtn"
                        BackgroundCssClass="modalBackground">
                    </ajaxToolkit:ModalPopupExtender>
                </ContentTemplate>
            </asp:UpdatePanel>
person Manish Goswami    schedule 31.05.2016
comment
@Kusum проверьте мой ответ на обновление, это наверняка вам поможет - person Manish Goswami; 31.05.2016
comment
Спасибо, что использовали все ваши 3 вышеуказанные концепции в моем коде, но не преодолели мою проблему. Так помогите мне найти ошибку. - person Kusum; 01.06.2016
comment
Работает ли это так же при использовании сетки с кнопкой ссылки внутри панели обновления? - person jroyce; 25.10.2018

Вы используете последнюю версию AjaxControlToolkit? В v16.1 были исправлены следующие ошибки:

person breez    schedule 31.05.2016
comment
Да, я использую последнюю версию AjaxControlToolkit (версия: 16.1.0.0) - person Kusum; 01.06.2016