从ModalpopupExtender中的GridView中删除

时间:2012-02-08 08:02:12

标签: asp.net gridview modalpopupextender

我有一个ModalPopupExtender,其中包括一个gridview(来自DataTable)。

在这个GridView中,我有一个删除按钮附加到每一行,它应该删除该行。无论如何可以从数据表中删除所选行,然后在不关闭ModalPopupExtender的情况下更新GridView?

这是我的GridView:

<ajaxToolkit:ModalPopupExtender ID="ModalPopupExtender1" runat="server" PopupDragHandleControlID="divPopupReport"  TargetControlID="btnHidden" PopupControlID="divPopupReport" CancelControlID="btnCloseReport" BackgroundCssClass="modalBackground"></ajaxToolkit:ModalPopupExtender>
<asp:UpdatePanel runat="server" ID="upReport">
<ContentTemplate>
<div id="divPopupReport" runat="server" style="text-align:left; padding-right:0px; background-color:White; border: 2px solid #87d000; display:none;" >

<asp:GridView ID="GridView2" runat="server" CssClass="list listExtended" 
                        DataKeyNames="DocumentGuid" Width="100%" OnRowCommand="GridView2_RowCommand" AutoGenerateColumns="false">
                        <Columns>
                            <asp:BoundField DataField="DocumentName" HeaderText="Dokumentname">
                                <ItemStyle CssClass="list"></ItemStyle>
                            </asp:BoundField>
                            <asp:BoundField DataField="CardName" HeaderText="Reference">
                                <ItemStyle CssClass="list"></ItemStyle>
                            </asp:BoundField>
                            <asp:BoundField DataField="DocumentDate" HeaderText="Date">
                                <ItemStyle CssClass="list"></ItemStyle>
                            </asp:BoundField>
                            <asp:TemplateField HeaderText="">
                                <ItemStyle CssClass="list" />
                                <ItemTemplate>
                                </ItemTemplate>
                            </asp:TemplateField>
                            <asp:TemplateField HeaderText="">
                                <ItemStyle CssClass="list" />
                                <ItemTemplate>
                                    <asp:ImageButton ID="btnDelete" CssClass="image" runat="server" CommandName="Delete" CommandArgument='<%# Eval("DocumentGuid") %>' ImageUrl="~/delete.gif" Width="16" Height="16" />
                                </ItemTemplate>
                            </asp:TemplateField>
                        </Columns>
                    </asp:GridView>
</div>    
</ContentTemplate>
</asp:UpdatePanel>

在我的RowCommand之下。

protected void GridView2_RowCommand(object sender, GridViewCommandEventArgs e)
{
    if (e.CommandName == "Delete")
    {
        DataTable SelectedDataTable = Session["SelectedDataTable"] as DataTable;
        string guid = Convert.ToString(e.CommandArgument);
        DataRow[] dr = SelectedDataTable.Select("DocumentGuid = '" + guid + "'");
        SelectedDataTable.Rows.Remove(dr[0]);
        Session["SelectedDataTable"] = SelectedDataTable;
        GridView2.DataSource = SelectedDataTable;
        GridView2.DataBind();
    }
}

2 个答案:

答案 0 :(得分:2)

您需要在网格周围包装UpdatePanel。这应该可以解决问题。

另一种选择是使用ajax。 使用Javascript / JQuery结合WebMethod手动删除表行: http://encosia.com/using-jquery-to-directly-call-aspnet-ajax-page-methods/

另一个简单的解决方案是在回发后重新显示弹出窗口。

答案 1 :(得分:1)

使用upReport div交换divPopupReport面板(即将upReport UpdatePanel放入divPopupReport div。