我用DataGrid分页,设置一下就可以分页了.
但当我在DataGird加入"选择"列后,再点分页页码,就出错:指定的参数已超出有效值的范围。参数名: index 是在DataGrid1_ItemCommand事件中下面语句的出错
int ID=Convert.ToInt32(e.Item.Cells[2].Text);//这里我把点"选择"的那行的第三列的ID值取出如果DataGrid不设置分页,上面的ItemCommand事件是没问题的.什么原因呢?

解决方案 »

  1.   

    楼上兄弟,就是调试后才出现这样的错误提示哟.
    就是点"下一页"翻页后,出错:指定的参数已超出有效值的范围。参数名: index 
    是在DataGrid1_ItemCommand事件中下面语句的出错
    int ID=Convert.ToInt32(e.Item.Cells[2].Text);//这里我把点"选择"的那行的第三列的ID值取出在没写DataGrid1_ItemCommand事件以前是可以翻页的.
      

  2.   

    DECLARE @pagenum AS INT, @pagesize AS INT
    SET @pagenum = 2
    SET @pagesize = 3
    SELECT *
    FROM (SELECT ROW_NUMBER() OVER(ORDER BY score DESC, speaker) AS rownum, 
            speaker, track, score
          FROM SpeakerStats) AS D
    WHERE rownum BETWEEN (@pagenum-1)*@pagesize+1 AND @pagenum*@pagesize
    ORDER BY score DESC, speaker
      

  3.   

    我估计你的代码是这样的:void datagrid1_ItemCommand(object src,DataGridItemEventArgs e){
    int ID=Convert.ToInt32(e.Item.Cells[2].Text);
    }改为如下试试:
    void datagrid1_ItemCommand(object src,DataGridItemEventArgs e){
    if(e.Item.ItemType==ListItemType.Item||e.Item.ItemType==ListItemType.AlternatingItem){
    int ID=Convert.ToInt32(e.Item.Cells[2].Text);
    }
    }
      

  4.   

    int ID=Convert.ToInt32(e.Item.Cells[2].Control[0].Text);
      

  5.   

    谢谢了.陕北吴大哥!
    按你的做法,搞定了.
    为什么要是正常项Item或交替项AlternatingItem才不会:"指定的参数已超出有效值的范围"呢?
      

  6.   

    为什么要是正常项Item或交替项AlternatingItem才不会:"指定的参数已超出有效值的范围"呢?
    =========》
    因为你点分页控钮后也引发了DataGrid1_ItemCommand这个事件,但是这时候e.Item就是分页按锯所在的行,这个行中只有一个cell,就是分页按钮所在的cell,所以e.Item.Cells[2]肯定超出索引了
      

  7.   

    webdiyer(陕北吴旗娃)解释的对!
    我就接分了。