2012-02-08 14 views
1

私はModalPopupExtenderを持っています.ModalPopupExtenderには、とりわけGridview(DataTableから)が設定されています。ModalpopupExtenderのGridViewから削除

このGridViewには、行を削除するはずの各行にdeletebuttonが添付されています。とにかく、データテーブルから選択した行を削除し、ModalPopupExtenderを閉じることなく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の下:

は、ここに私のGridViewのです。

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(); 
    } 
} 

答えて

1

スワップdivPopupReport DIV(すなわち場所divPopupReport DIVにupReportのUpdatePanel)とupReportパネル。

+0

お返事ありがとうございます。しかしそれはそうではありません - 行はまだGridViewにあります(デバッグしようとすると、行はDataTableから削除されます)。私は、divPopupReportタグ内にupReportとContentTemplateを追加しました。 – Thomas

+0

トリックを実行した代わりに、 'Delete' RowCommandをonClick-listenerに変更しました。ありがとう – Thomas

2

グリッドの周りにUpdatePanelをラップする必要があります。これは問題を解決するはずです。

もう1つの方法は、ajaxを使用することです。 WebMethod属性との組み合わせで、手動でテーブルの行を削除するにはJavascriptを/ jQueryの使用: http://encosia.com/using-jquery-to-directly-call-aspnet-ajax-page-methods/

もう一つの簡単な解決策は、ポストバック後に再表示されたポップアップです。

関連する問題