Панель Modalpopupextender, в виде сетки - PullRequest
1 голос
/ 08 апреля 2011

У меня проблема. Следуйте исходному коду

      <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 (отправитель как объект, e как System.Web.UI.WebControls.GridViewCommandEventArgs) Обрабатывает gvMonitor.RowCommand If (e.CommandName = "CambiaStato") Тогда

Почему? Спасибо

1 Ответ

0 голосов
/ 13 апреля 2011

Во-первых, это потому, что в кнопке btnConfermaCambioStato нет CommandName.

Когда вы нажимаете btnCambiaStato, gvMonitor_RowCommand должен быть поднят, но он поглощается ModalPopupExtender, чтобы он мог показывать всплывающее окно Клиентская сторона без отправки назад. но в данном случае это так, потому что вы не хотите выполнять обратную передачу, пока действие не будет подтверждено.

Если вы хотите вызвать событие, когда нажимаете btnConfermaCambioStato, вам следует добавить CommandName к кнопке, которая вызывает событие.

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

Но это не будет работать, потому что вы указали его в качестве OkControl для ModalPopupExtender, это скажет ModalPopupExtender принять событие и обработать его на стороне клиента, запустив функцию onOk() javascript.

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

Итак, вы, вероятно, хотите удалить эти 2 свойства, чтобы обрабатывать событие click btnConfermaCambioStato на стороне сервера, используя событие gvMonitor_RowCommand. Вот и ответь «Почему?»

Но я думаю, что вы не будете в беде, зная это. В зависимости от того, что вы хотите сделать, в gvMonitor_RowCommand вы, вероятно, установите свой gridview как asyncpostbacktrigger панели обновлений для его плавной обработки, затем вы можете скрыть ModalPopupExtender на стороне сервера и затем обновить все, что вам нужно в этом панель обновления. Но я просто размышляю здесь.

...