Метод Modal Popup Extender Show() не работает

У меня есть ListView с LinkButton. Я использую метод OnItemCommand с CommanName, чтобы открыть диалоговое окно.

Если пользователь нажмет на LinkButton, я хочу, чтобы открылся диалог (с элементами управления и т. д.). Но я каждый раз получаю ту же ошибку:

System.InvalidOperationException: ListView "myListView" имеет одно выполнение SelectedIndexChanging-Event, которое не было обработано.

Мой код: aspx

...

<asp:HiddenField ID="hidForModel" runat="server" />

    <asp:scriptmanager id="ScriptManager1" runat="server">
       </asp:scriptmanager> 

       <asp:modalpopupextender id="PopUpDialog" 
                runat="server" cancelcontrolid="btnCancel" 
                okcontrolid="btnOkay" targetcontrolid="hidForModel" 
                popupcontrolid="Panel1" popupdraghandlecontrolid="PopupHeader" 
                drag="true" backgroundcssclass="ModalPopupBG" >

</asp:modalpopupextender>

            <div class="popupConfirmation" id="Panel1" runat="server" >
              <asp:Panel runat="server" ID="PopupHeader" CssClass="modalPopup">Benutzerinformationen</asp:Panel>
                <div class="Body">
                    Hallo
                    <asp:TextBox ID="txtVorname" runat="server"></asp:TextBox>
                    <asp:Button id="btnOkay" runat="server" text="Speichern" />
                    <asp:Button id="btnCancel" runat="server" text="Abbrechen" />
                </div>

            </div>

...

 <asp:ListView runat="server" ID="myListView" OnItemCommand="myListView_ItemCommand">

        <LayoutTemplate>
            <table id="UserTable" runat="server" border="0" width="800" cellpadding="0" cellspacing="0">
                <tr style="background-color:#E5E5FE" class="TableClass">
                    <th id="th1" runat="server"><asp:LinkButton ID="lnkBenutzer" runat="server" >id_Benutzer</asp:LinkButton></th>
                    <th id="th2" runat="server"><asp:LinkButton ID="lnkemail" runat="server" >id_Email</asp:LinkButton></th>
                    <th id="th3" runat="server"><asp:LinkButton ID="lnkVorname" runat="server" >id_Vorname</asp:LinkButton></th>
                    <th id="th4" runat="server"><asp:LinkButton ID="lnkNachname" runat="server" >id_Nachname</asp:LinkButton></th>
                    <th id="th5" runat="server"><asp:LinkButton ID="lnkTelefon" runat="server" >id_Telefon</asp:LinkButton></th>
                </tr>
                <tr runat="server" id="ItemPlaceholder">
                </tr>
            </table>
        </LayoutTemplate>

        <ItemTemplate>

            <tr class="TableClass">    
                <td align="left" ><asp:LinkButton CssClass="MyLink" CommandName="Select" CommandArgument='<%# Container.DataItemIndex %>' ID="Label1" Text='<%# Eval("Benutzername") %>' runat="server" /></td>
                <td align="left"><asp:LinkButton CssClass="MyLink"  CommandName="Select" CommandArgument='<%# Container.DataItemIndex %>' ID="Label2" Text='<%# Eval("eMail") %>' runat="server" /></td>
                <td align="left"><asp:LinkButton CssClass="MyLink" CommandName="Select" CommandArgument='<%# Container.DataItemIndex %>' ID="Label3" Text='<%# Eval("Vorname") %>' runat="server" /></td>
                <td align="left"><asp:LinkButton CssClass="MyLink"  CommandName="Select" CommandArgument='<%# Container.DataItemIndex %>' ID="Label4" Text='<%# Eval("Nachname") %>' runat="server"  /></td>
                <td align="left"><asp:LinkButton CssClass="MyLink"  CommandName="Select" CommandArgument='<%# Container.DataItemIndex %>' ID="Label5" Text='<%# Eval("Telefonnummer") %>' runat="server"  /></td>

              <td align="left"><asp:Label ID="Label6" Text='<%# Eval("GUID") %>' runat="server" Visible="False" /></td>

            </tr>

        </ItemTemplate>

        <AlternatingItemTemplate>

            <tr class="TableClass"> 

                <td align="left" ><asp:LinkButton CssClass="MyLink" CommandName="Select" CommandArgument='<%# Container.DataItemIndex %>' ID="Label1" Text='<%# Eval("Benutzername") %>' runat="server" /></td>
                <td align="left"><asp:LinkButton CssClass="MyLink" CommandName="Select" CommandArgument='<%# Container.DataItemIndex %>' ID="Label2" Text='<%# Eval("eMail") %>' runat="server" /></td>
                <td align="left"><asp:LinkButton CssClass="MyLink"  CommandName="Select" CommandArgument='<%# Container.DataItemIndex %>' ID="Label3" Text='<%# Eval("Vorname") %>' runat="server" /></td>
                <td align="left"><asp:LinkButton CssClass="MyLink"  CommandName="Select" CommandArgument='<%# Container.DataItemIndex %>' ID="Label4" Text='<%# Eval("Nachname") %>' runat="server" /></td>
                <td align="left"><asp:LinkButton CssClass="MyLink" CommandName="Select" CommandArgument='<%# Container.DataItemIndex %>' ID="Label5" Text='<%# Eval("Telefonnummer") %>' runat="server" /></td>

                <td align="left"><asp:Label ID="Label6" Text='<%# Eval("GUID") %>' runat="server" Visible="False" /></td>

            </tr>

        </AlternatingItemTemplate>

        </asp:ListView>

...

С# код:

protected void myListView_ItemCommand(object sender, ListViewCommandEventArgs e)
        {
            if (e.CommandName == "Select")
            {
                txtVorname.Text = "test";

                PopUpDialog.Show();  //<-- Here is the error 

            }
        }

Это загадка, что я могу открыть диалог с помощью Button (для тестирования), но не с LinkButton.


person Tarasov    schedule 14.08.2012    source источник


Ответы (3)


Вам просто нужно обработать событие SelectedIndexChanging в файле ListView.

Разметка

<asp:ListView runat="server" ID="myListView" OnItemCommand="myListView_ItemCommand"
    OnSelectedIndexChanging="myListView_SelectedIndexChanging" >

Код программной части:

protected void myListView_SelectedIndexChanging(object sender, EventArgs e)
{

}

В ListView есть определенные события, которые необходимо обрабатывать, если они срабатывают. Если эти события попытка сработать (например, щелчок по элементу списка, у которого "CommandName" имеет значение "Select" для запуска события SelectedIndexChanging), и они не обрабатываются, вы получаете ошибку, подобную той, которую вы упомянули.

person Josh Darnell    schedule 14.08.2012
comment
спасибо, спасибо, спасибо :))))) это работает, мне нужно так много времени для этого решения: D .. если вы читаете это, можете ли вы мне дать ссылку на сайт, где это объясняется событиями из списка, потому что я хочу, чтобы все знали о списке - person Tarasov; 14.08.2012
comment
@Tarasov Добро пожаловать! Честно говоря, документация MSDN это лучшее место для получения информации о событиях ListView. Особенно раздел внизу, помеченный событиями. В нем есть таблица, в которой перечислены все из них и то, что они делают. - person Josh Darnell; 14.08.2012
comment
Самое важное, на что следует обратить внимание, это то, что полученное вами сообщение об ошибке указывает на то, чего не хватает. В нем говорится, что событие SelectedIndexChanging не было обработано; если вы видите это, вам нужно справиться с этим. - person Josh Darnell; 14.08.2012

Не используйте текст команды Select. По какой-то причине всплывающее окно не отображается. Например, сделайте следующее:

if(e.CommandName == "ShowPopup")

Это решило мою проблему.

person Luigi    schedule 05.03.2014

person    schedule
comment
добавить пространство имен с помощью AjaxControlToolkit; - person Zainul; 14.12.2012