for 判断为什么加2个i<iRowNum&&i<dtInitial.Rows.Count
1个就够了。

解决方案 »

  1.   

    i<iRowNum&&i<dtInitial.Rows.Count
    是怕所指定的行数大于原始行数而做的容错功能,
    运行时的错误根这个无关
      

  2.   

    看了一下,可能是下面这句有问题吧DataRow[] drTemp = dtInitial.Select("",strSelect);------------------------
    不是很懂,刚开始学
      

  3.   

    try
    for(int i=0;i<iRowNum&&i<dtInitial.Rows.Count;i++)
    ---->
    for(int i=0;i<iRowNum&&i<drTemp.Length;i++)
      

  4.   

    你的drTemp是经过select之后的
    长度应该<=你的DataTable的Rows.Count
    所以当输入10000(足够大,大于你的Table的Rows.Count)的时候
    drTemp[i]肯定会超出界限
      

  5.   

    上述的方法都不行!
    是这样的,当用户要查看的行数大于原始那个datatable的行数时能正常运行,但小于他的时候,好像时datagrid读完dtReport之后还想继续读下去,所以索引超界,不知道这个问题怎么解决,为什么datagrid默认的要读的行数还是那个dtInitial的行数呢???
      

  6.   

    我已经解决了,不是这里出的问题,是我在datagrid_paint()函数里绘制的行数设成了dtInitial的行数,所以当dtReport的行数较小时,就出现索引超界的问题散分!