【问题标题】:GridView PageIndexChangingGridView PageIndexChanging
【发布时间】:2012-08-29 18:17:34
【问题描述】:

我有一个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_RowDeleting”命令而不是“griditems_PageIndexChanging”。

标签: c# asp.net gridview page-index-changed


【解决方案1】:

您也应该展示您的 griditems_RowDeleting 实现,但即使没有它,我也可以假设您只需要获取行的索引并将页码乘以每页中的记录数量。

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
    }
}

【讨论】:

  • 谢谢...我知道我忽略了一些愚蠢的事情。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-06-07
  • 1970-01-01
  • 1970-01-01
  • 2013-04-11
  • 2012-12-05
  • 1970-01-01
  • 2018-03-19
相关资源
最近更新 更多