GridView分页后RowCommand出错:索引超出范围

首先,分析下原因:

1.前提DataKeyNames绑定。

2.将记录排序分配索引号,从0开始。

3.当点击其他分页时,GridView将重新分配count为当前页记录数

eg: 每页显示2条,共5条,也就是3页。

第一页,GridView.count是2

第二页,GridView.count也是2

第三页,GridView.count是1

也就是说count是当页的条数。而e.CommandArgument索引号是递增不重新分配。

解决方案:

            int iPageIndex = GridView1.PageIndex;   //获取当前页索引
            int iPageSize =  GridView1.PageSize;      //获取每页显示记录数
            int iIndex = Convert.ToInt16(e.CommandArgument)-iPageIndex*iPageSize;  //计算
            string strId = GridView1.DataKeys[iIndex].Value.ToString();

            //ID获取,是删除,还是更新,随你。

 

你可能感兴趣的:(GridView)