0

GridViewのdeleteコマンドに以下のコードを使用しましたが、deleteコマンドを押すとグリッドビューのデータが更新されず、実際にはコマンドで行が削除されますが、グリッドビューは更新されません。ブラウザを手動で更新する必要があります。そうすると、グリッドビューが更新されます。マークアップ:

<div>

  <asp:UpdatePanel ID="UpdatePanel1" runat="server">
  <ContentTemplate>



<asp:GridView ID="GridViewDocuments_Search" runat="server" AutoGenerateColumns=False 
          Visible="False" onrowcommand="GridViewDocuments_Search_RowCommand"  
  DataKeyNames="DocID" PageSize="100" EnableSortingAndPagingCallbacks="True"  >
    <Columns>
    <asp:TemplateField HeaderText = "Details">
           <ItemTemplate>
      <asp:Button ID ="btn_Show" Text="Details" runat= "server" CommandName= "Details" CommandArgument='<%#
        Container.DataItemIndex%>' />
        </ItemTemplate>
            </asp:TemplateField>


        <asp:BoundField DataField="DocumentNo" HeaderText="DocNo" />


        <asp:BoundField DataField="title" HeaderText="Title" SortExpression="title" />
        <asp:BoundField DataField="Docid" HeaderText="Docid" Visible="false" />
        <asp:CommandField ShowEditButton="True" />
        <asp:CommandField ShowDeleteButton="True" />
    </Columns>
</asp:GridView>
  </ContentTemplate>

  </asp:UpdatePanel>
</div>

コード:

protected void GridViewDocuments_Search_RowCommand(object sender, GridViewCommandEventArgs e)
{
    int rowindex = Convert.ToInt32(e.CommandArgument.ToString());
    _DataContext = new EDMSDataContext();

    int _Docid = (int)GridViewDocuments_Search.DataKeys[rowindex].Value;

     switch (e.CommandName)
    {
        case "Details":
           Response.Redirect("~/Documentfortest.aspx?DocID=" + _Docid);
            break;
        case "Delete":
            _DataContext.DeleteDoc(_Docid);

            break;

    }

 var query = _DataContext.spQuickSearchDoc(txtSearchKeywords.Text);

     GridViewDocuments_Search.DataSource = query;
     GridViewDocuments_Search.DataBind();


} 
4

1 に答える 1

0

呼び出してから試すDataSource前に、必ずプロパティを再割り当てしてください。DataBind

于 2012-12-17T06:55:38.930 に答える