启用分页时删除Gridview行

时间:2015-03-05 05:35:25

标签: c# asp.net gridview datatable paging

我有一个Gridview,启用了分页并启用了删除按钮。使用下面的代码,删除按下删除按钮的行上方的行。我也试过做“dt.Rows.Remove(dt.Rows [rowIndex-1]”。

行值仅在DataTable中(不在数据库中)。

严重困扰

在gridview中启用分页时,需要帮助或代码来删除行。

protected void GVRequest_RowDeleting(object sender, GridViewDeleteEventArgs e)
    {
        if (ViewState["CurrentTable"] != null)
        {
            DataTable dt = (DataTable)ViewState["CurrentTable"];
            DataRow drCurrentRow = null;
            int rowIndex = Convert.ToInt32(e.RowIndex);
            if (dt.Rows.Count > 1)
            {
                dt.Rows.Remove(dt.Rows[rowIndex]);
                drCurrentRow = dt.NewRow();
                ViewState["CurrentTable"] = dt;

                GVRequest.DataSource = dt;
                GVRequest.DataBind();

                for (int i = 0; i < GVRequest.Rows.Count - 1; i++)
                {
                    GVRequest.Rows[i].Cells[0].Text = Convert.ToString(i + 1);
                }
                //SetPreviousData();

                dt.AcceptChanges();

                ViewState["CurrentTable"] = dt;

                DataView view = new DataView(dt);
                DataTable dt1 = view.ToTable( /*distinct*/ true, "CartonID", "FileID", "FileMasterID", "DeptFileID", "RequestID");

                GVRequest.DataSource = dt1;

                DataBind();
            }
        }

1 个答案:

答案 0 :(得分:0)

来自OP评论

  

当我按下删除按钮时,它正在从中删除所选行   仅限第一页

当您要在第一页之后从页面删除记录时,您必须在之前的页面上添加记录以获取DataTable中记录的索引,因为DataTable不知道您在哪个页面上。

如果删除第二页索引4处的记录,则使用您拥有的代码,您将在第一页上删除索引为4的记录。

您需要计算DataTable的索引,使PageNo和PageSize保持在表达式中,如下所示。

int rowIndex = e.RowIndex + GVRequest.PageIndex * GVRequest.PageSize ;

注意:我认为第一页的PageNo为零