C# 启用分页时Gridview行删除/删除

C# 启用分页时Gridview行删除/删除,c#,gridview,paging,aspxgridview,C#,Gridview,Paging,Aspxgridview,我有一个启用分页的gridview 当我试图删除除第1页以外的页面上的行时,它删除的是不正确的行,而不是按下删除按钮的行 protected void GVRequest_RowDeleting(object sender, GridViewDeleteEventArgs e) { int index = Convert.ToInt32(e.RowIndex); DataTable dtCurrentTable = ViewState["CurrentTa

我有一个启用分页的gridview

当我试图删除除第1页以外的页面上的行时,它删除的是不正确的行,而不是按下删除按钮的行

protected void GVRequest_RowDeleting(object sender, GridViewDeleteEventArgs e)
    {
        int index = Convert.ToInt32(e.RowIndex);
        DataTable dtCurrentTable = ViewState["CurrentTable"] as DataTable;
        dtCurrentTable.Rows[index].Delete();

        ViewState["CurrentTable"] = dtCurrentTable;

        DataView view = new DataView(dtCurrentTable);
        DataTable dt1 = view.ToTable(true, "CartonID", "FileID", "FileMasterID", "DeptFileID", "RequestID");

        GVRequest.DataSource = dt1;

        DataBind();

    }
试试这个

替换你的

dtCurrentTable.Rows[index].Delete();

试试这个

protected void GVRequest_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
        int p = Convert.ToInt32(ViewState["Pageindex"]);
        int s = GVRequest.PageSize;
        p = p * s;
        DataTable dtCurrentTable= new DataTable();
        int d = Convert.ToInt32(e.RowIndex);
        int dl = d + p;
        dt = ViewState["CurrentTable"] as DataTable;
    dtCurrentTable.Rows[dl].Delete();

    ViewState["CurrentTable"] = dtCurrentTable;

    DataView view = new DataView(dtCurrentTable);
    DataTable dt1 = view.ToTable(true, "CartonID", "FileID", "FileMasterID", "DeptFileID", "RequestID");

    GVRequest.DataSource = dt1;

    DataBind();
        ViewState["Pageindex"] = 0;
}

protected void NextPage(object sender, GridViewPageEventArgs e)
{
    GVRequest.PageIndex = e.NewPageIndex;
    ViewState["Pageindex"] = e.NewPageIndex;
    GVRequest.DataSource = ViewState["CurrentTable"] as DataTable; //get datasource (list or datatable)
    DataBind();
}
如果使用上面的代码,您不想假设任何东西

protected void GVRequest_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
        int p = Convert.ToInt32(ViewState["Pageindex"]);
        int s = GVRequest.PageSize;
        p = p * s;
        DataTable dtCurrentTable= new DataTable();
        int d = Convert.ToInt32(e.RowIndex);
        int dl = d + p;
        dt = ViewState["CurrentTable"] as DataTable;
    dtCurrentTable.Rows[dl].Delete();

    ViewState["CurrentTable"] = dtCurrentTable;

    DataView view = new DataView(dtCurrentTable);
    DataTable dt1 = view.ToTable(true, "CartonID", "FileID", "FileMasterID", "DeptFileID", "RequestID");

    GVRequest.DataSource = dt1;

    DataBind();
        ViewState["Pageindex"] = 0;
}

protected void NextPage(object sender, GridViewPageEventArgs e)
{
    GVRequest.PageIndex = e.NewPageIndex;
    ViewState["Pageindex"] = e.NewPageIndex;
    GVRequest.DataSource = ViewState["CurrentTable"] as DataTable; //get datasource (list or datatable)
    DataBind();
}