Modalpopupextender面板,进入gridview

时间:2011-04-08 13:28:11

标签: asp.net gridview modalpopupextender

我有一个问题。遵循源代码

      <asp:GridView ID="gvMonitor" runat="server" AutoGenerateColumns="False" DataKeyNames="ticket_id"
                    DataSourceID="dsTicket" AllowPaging="True" AllowSorting="True" CellPadding="8"
                    ForeColor="#333333" GridLines="None">
                    <AlternatingRowStyle BackColor="White" ForeColor="#284775" />
                    <Columns>
                        <asp:CommandField ShowSelectButton="True" />
                        <asp:TemplateField>
                            <ItemTemplate>
                                <asp:ImageButton runat="server" ID="btnCambiaStato" ImageUrl="/images/status.png"
                                    ToolTip="Cambia stato ticket" Height="24px" CommandName="CambiaStato" Width="24px" />
                                &nbsp;
                                <asp:ImageButton runat="server" ID="ImageButton2" ImageUrl="/images/icon_history.jpg"
                                    ToolTip="Storico ticket" Height="24px" CommandName="StoriaTicket" Width="24px" />
                                <asp:ModalPopupExtender ID="mpeCambiaStato" runat="server" TargetControlID="btnCambiaStato"
                                    PopupControlID="panelCambiaStatoTicket" BackgroundCssClass="modalBackground"
                                    DropShadow="true" OkControlID="btnConfermaCambioStato" OnOkScript="onOk()" CancelControlID="btnCancellaCambioStato" />
                                <asp:Panel runat="server" ID="panelCambiaStatoTicket" Style="background-color: White;
                                    padding: 10px 10px 10px 10px; border-color: Black; border-width: 1px; border-style: solid;">
                                    Seleziona il nuovo stato del Ticket &nbsp;
                                    <asp:DropDownList runat="server" ID="cmbStatoTicket">
                                        <asp:ListItem Text="Aperto" Value="A"></asp:ListItem>
                                        <asp:ListItem Text="Chiuso" Value="C"></asp:ListItem>
                                    </asp:DropDownList>
                                    <br />
                                    <br />
                                    Inserisci una nota di avanzamento (opzionale)
                                    <br />
                                    <asp:TextBox runat="server" ID="txtNotaAvanzamento" TextMode="MultiLine" Text=""
                                        Height="60px" Width="240px"></asp:TextBox>
                                    <br />
                                    <asp:Button runat="server" ID="btnConfermaCambioStato" Text="Conferma" />
                                    &nbsp;
                                    <asp:Button runat="server" ID="btnCancellaCambioStato" Text="Cancella" />
                                </asp:Panel>
                            </ItemTemplate>
                        </asp:TemplateField>
                        <asp:BoundField DataField="ticket_id" HeaderText="Nr Ticket" InsertVisible="False"
                            ReadOnly="True" SortExpression="ticket_id" />

问题是,当我点击 btnConfermaCambioStato 时,asp.net不会上升

  

Private Sub gvMonitor_RowCommand(sender As Object,e As System.Web.UI.WebControls.GridViewCommandEventArgs)处理gvMonitor.RowCommand           如果(e.CommandName =“CambiaStato”)那么

为什么? 感谢

1 个答案:

答案 0 :(得分:0)

首先,这是因为CommandName按钮中没有btnConfermaCambioStato

单击btnCambiaStato时,应该引发gvMonitor_RowCommand,但它被ModalPopupExtender吸收,因此它可以显示弹出客户端而不回发。但在这种情况下它是合作的,因为你不想在确认行动之前回发。

如果要在单击btnConfermaCambioStato时引发事件,则应该向触发事件的按钮添加CommandName。

<asp:Button runat="server" ID="btnConfermaCambioStato" 
            Text="Conferma"
            CommandName="ConfermaCambiaStato" />

但它也不会工作,因为你指定它是ModalPopupExtender的OkControl,这告诉ModalPopupExtender吸收事件并通过运行onOk() javascript函数处理它的客户端。

OkControlID="btnConfermaCambioStato" OnOkScript="onOk()"

因此,您可能希望删除这两个属性,以便使用btnConfermaCambioStato事件处理服务器端上的gvMonitor_RowCommand点击事件。回答“为什么?”

但我认为你不会因为知道这一点而摆脱困境。根据您的想法,在gvMonitor_RowCommand中,您可能已将gridview设置为updatepanel的asyncpostbacktrigger以便顺利处理它,然后您可以在服务器端隐藏ModalPopupExtender,然后更新您需要的任何内容在该更新面板中。但我只是在这里猜测。