快帮忙!!我快疯了!!!

davidyoung821 2004-09-24 03:34:15
我想实现这样的功能:
datagrid显示查询结果后,能再在结果中选出若干行,显示出来,代码如下:

DataTable dtReport = new DataTable(dtInitial.TableName);//dtInitial是原始的datatable
DataColumn mycol;
foreach(DataColumn col in dtInitial.Columns)
{
mycol = new DataColumn();
mycol.ColumnName = col.ColumnName;
mycol.DataType = col.DataType;
dtReport.Columns.Add(mycol);
}
string strSelect = "columnname DESC";//排序的条件
DataRow[] drTemp = dtInitial.Select("",strSelect);
DataRow mydr;
int iRowNum = System.Convert.ToInt32(this.comboBox4.Text);//iRowNum是用户要查看的行数
for(int i=0;i<iRowNum&&i<dtInitial.Rows.Count;i++)
{
mydr = dtReport.NewRow();
foreach(DataColumn col in dtInitial.Columns)
{
string str = col.ColumnName;
mydr[str]=drTemp[i][str];
}
this.dtReport.Rows.Add(mydr);
}
this.dataGrid1.DataSource=null;
this.dataGrid1.DataSource=this.dtReport;

运行时提示“索引超出了数组界限”。
而且我发现当查看的行数大于等于(原来的行数-1)就没有这个问题,为什么???
...全文
137 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
juanmaolihui 2004-09-24
  • 打赏
  • 举报
回复
cngis 2004-09-24
  • 打赏
  • 举报
回复
多散给我点好了。
cngis 2004-09-24
  • 打赏
  • 举报
回复
好的,那就接点。
davidyoung821 2004-09-24
  • 打赏
  • 举报
回复
我已经解决了,不是这里出的问题,是我在datagrid_paint()函数里绘制的行数设成了dtInitial的行数,所以当dtReport的行数较小时,就出现索引超界的问题

散分!
davidyoung821 2004-09-24
  • 打赏
  • 举报
回复
上述的方法都不行!
是这样的,当用户要查看的行数大于原始那个datatable的行数时能正常运行,但小于他的时候,好像时datagrid读完dtReport之后还想继续读下去,所以索引超界,不知道这个问题怎么解决,为什么datagrid默认的要读的行数还是那个dtInitial的行数呢???
brightheroes 2004-09-24
  • 打赏
  • 举报
回复
你的drTemp是经过select之后的
长度应该<=你的DataTable的Rows.Count
所以当输入10000(足够大,大于你的Table的Rows.Count)的时候
drTemp[i]肯定会超出界限
brightheroes 2004-09-24
  • 打赏
  • 举报
回复
try


for(int i=0;i<iRowNum&&i<dtInitial.Rows.Count;i++)
---->
for(int i=0;i<iRowNum&&i<drTemp.Length;i++)
itperson 2004-09-24
  • 打赏
  • 举报
回复
看了一下,可能是下面这句有问题吧

DataRow[] drTemp = dtInitial.Select("",strSelect);

------------------------
不是很懂,刚开始学
wxqq2001 2004-09-24
  • 打赏
  • 举报
回复
调试,看哪一行报错。
davidyoung821 2004-09-24
  • 打赏
  • 举报
回复
i<iRowNum&&i<dtInitial.Rows.Count
是怕所指定的行数大于原始行数而做的容错功能,
运行时的错误根这个无关
leisang 2004-09-24
  • 打赏
  • 举报
回复
for 判断为什么加2个i<iRowNum&&i<dtInitial.Rows.Count
1个就够了。
wuzhijie 2004-09-24
  • 打赏
  • 举报
回复
顶!

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧