日期:2014-05-18  浏览次数:20912 次

对象数组属性索引超出
business[] bussiness = proxy.GetBussiness("",handcode,"",-1,-1,"","");
  int k=bussiness.Length; 
  for (int i = 0; i < k; i++)
  {
  business bss =bussiness[i];
  if (bussiness != null)
  {
  this.dataGridView1.Rows[i].Cells[0].Value = bss.DETAILCODE;
  this.dataGridView1.Rows[i].Cells[1].Value = bss.HANDCODE;
  this.dataGridView1.Rows[i].Cells[2].Value = bss.GOOCODE;
  this.dataGridView1.Rows[i].Cells[3].Value = bss.GOONUM;
  this.dataGridView1.Rows[i].Cells[4].Value = bss.GOOPRICE;
  this.dataGridView1.Rows[i].Cells[5].Value = bss.STORECODEIN;
  this.dataGridView1.Rows[i].Cells[6].Value = bss.STORECODEOUT;
  }
  i++;
  }

只能返回一条数据 第二条返回绑定时说超出索引
business 是个对象

------解决方案--------------------
仔细地分析了一下,重复的i++是有问题,但这并不会引起楼主的问题,难道忘掉i < k这个条件了吗?最多也就是跳几行,但决对不会报错。
真正的问题应该在这里:
this.dataGridView1.Rows[i].Cells[0].Value = bss.DETAILCODE;
楼主,你能肯定在绑定数据的时候有足够的行吗?
事实上,楼主你的做法完全不合常理,数据绑定控件的操作不需要这样一个格子一个格子赋值,直接使用DataGridView.DataSource属性就可以了,但前提是你要在设计器或代码里为每一列设置好要绑定的属性名称。

business[] bussiness = proxy.GetBussiness("",handcode,"",-1,-1,"","");
this.dataGridView1.DataSource = business;

两行搞定!