C# GridView页面索引交换

C# GridView页面索引交换,c#,asp.net,gridview,page-index-changed,C#,Asp.net,Gridview,Page Index Changed,我有一个gridview,当视图中有10个以上的项目时,会添加一个新页面,非常简单……无论如何,当用户在第二个页面上并在该记录上单击“删除”时,该行第一个页面中的项目会被删除。示例:第1页有10项,第一行是零件号1234,第二页第一行是零件号7890。如果用户单击7890记录的删除,则1234记录将从第一行删除,或者从他们选择要删除的对应行中删除 代码如下: protected void griditems_PageIndexChanging(object sender, GridViewPag

我有一个gridview,当视图中有10个以上的项目时,会添加一个新页面,非常简单……无论如何,当用户在第二个页面上并在该记录上单击“删除”时,该行第一个页面中的项目会被删除。示例:第1页有10项,第一行是零件号1234,第二页第一行是零件号7890。如果用户单击7890记录的删除,则1234记录将从第一行删除,或者从他们选择要删除的对应行中删除

代码如下:

protected void griditems_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        griditems.PageIndex = e.NewPageIndex;
        BindData();
    }
编辑对不起,各位……下面是删除命令:

 protected void griditems_RowDeleting(object sender, GridViewDeleteEventArgs e)
    {
        try
        {
            DataTable dt = (DataTable)Session["table"];
            if (dt.Rows.Count > 0)
            {
                dt.Rows.RemoveAt(e.RowIndex);
                griditems.DataSource = dt;
                BindData();
            }
        }
        catch
        {
            //error message
        }
    }
在aspx中:

<asp:GridView ID="griditems" runat="server" onrowdeleting="griditems_RowDeleting" onrowediting="griditems_RowEditing" onrowupdating="griditems_RowUpdating"
                  AllowPaging="True" PageSize="10" onpageindexchanging="griditems_PageIndexChanging" Onrowcancelingedit="griditems_RowCancelingEdit" 
                  Caption="Order Details" AutoGenerateDeleteButton="True" AutoGenerateEditButton="True" onrowdatabound="griditems_RowDataBound" >            
        <EditRowStyle BackColor="#FF9900" BorderStyle="Double"/> 
        <RowStyle HorizontalAlign="Center"/>
</asp:GridView>

您也应该显示您的
griditems\u行删除
实现,但即使没有它,我也可以假设您只需要获取行的索引,并将页码乘以每页中的记录量添加到其中

Console.WriteLine(e.RowIndex); // 7
Console.WriteLine(griditems.PageIndex); // 3

// Assuming you have 10 records per page, you can safely say...
var realIndexOfRecord = e.RowIndex + griditems.PageIndex * 10; // 37
编辑后:

protected void griditems_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
    try
    {
        DataTable dt = (DataTable)Session["table"];
        if (dt.Rows.Count > 0)
        {
            // Replace `10` with the appropriate variable
            dt.Rows.RemoveAt(e.RowIndex + griditems.PageIndex * 10);
            griditems.DataSource = dt;
            BindData();
        }
    }
    catch
    {
        //error message
    }
}

我想你应该发布“griditems\u RowDelete”命令而不是“griditems\u PageIndexchange”。谢谢你……我知道我忽略了一些愚蠢的事情。