启用分页时删除Gridview行 [英] Delete Gridview row when paging is enabled

查看:85
本文介绍了启用分页时删除Gridview行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个启用了页面调度和删除按钮的Gridview.使用以下代码,删除键所在的行上方的行将被删除.我也尝试过做"dt.Rows.Remove(dt.Rows [rowIndex-1]".

I have a Gridview with paging enabled and delete button enabled. With the below code the row above the one for which the delete button is pressed gets deleted. I have also tried doing "dt.Rows.Remove(dt.Rows[rowIndex-1]".

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

The row values are in a DataTable only (not in Database).

严重卡住

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

Need help or code to delete row when paging is enabled in 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();
            }
        }

推荐答案

来自OP注释

当我按下Delete(删除)按钮时,它正在从 仅首页

when I press the delete button it is deleting a selected row from the first page only

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

When you are going to delete record from page after first page, you have to add the records on previous pages to get the index of the record in the DataTable as the DataTable does not know on what page you are.

如果您具有删除第二页索引4上的记录的代码,则实际上将删除第一页索引4的记录.

With the code you have if you delete record at index 4 on second page you will actually delete record with index 4 on first page.

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

You need to calculate the index of DataTable keeping the PageNo and PageSize in expression as shown under.

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

注意:我假设首页的PageNo为零

这篇关于启用分页时删除Gridview行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆