首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

C#DataGridView.Rows[i]有关问题

2012-07-28 
C#DataGridView.Rows[i]问题//清空现有DataGridView数据while (this.dataGridView1.Rows.Count ! 0){this

C#DataGridView.Rows[i]问题
//清空现有DataGridView数据
  while (this.dataGridView1.Rows.Count != 0)
  {
  this.dataGridView1.Rows.RemoveAt(0);
  }
  //dataGridView1.Rows.Clear();
  modelList_quanxian = bll_quanxian.DataTableToList(bll_quanxian.GetAllList().Tables[0]);
for (int i = 0; i < modelList_quanxian.Count; i++)
  {
  model_quanxian = modelList_quanxian[i];
  DataGridViewRow dr = new DataGridViewRow();
  dataGridView1.Rows.Add(dr);
  dataGridView1.Rows[i].Cells[0].Value = model_quanxian.QuanXianBianHao;
  dataGridView1.Rows[i].Cells[1].Value = model_quanxian.QuanXianMingCheng;
  }
说明一下,Count有很多行,问题在于我往DataGridView中添加时,会报出Row[i]索引值超出范围,必须为非负值,并小于集合大小。
“dataGridView1.Rows[i]”引发了“System.ArgumentOutOfRangeException”类型的异常-------导致的问题是,新增和修改操作,调用此方法,页面结果显示不全。做删除操作时,调用此方法能够显示全。请问各位高手如何解决。

[解决办法]
不明白你怎么会搞成这样,我把我自定义dataGridview控件里面的代码给你看下,反正用到现在还没问题暂时。

C# code
        /// <summary>        /// 在最后一笔添加新行         /// </summary>        public void AddNewRow()        {                dataGridView1.Rows.Add();             int i = dataGridView1.Rows.Count - 1;             dataGridView1.CurrentCell = dataGridView1[0, i]; // 强制显示该行             dataGridView1[0, i].Selected = true;   //光标移至该行        }        /// <summary>        /// 删除最后一笔记录,或者选定的记录        /// </summary>        public void DeleteRow()        {            if (dataGridView1.CurrentRow == null)                return;            dataGridView1.Rows.Remove(dataGridView1.CurrentRow);        }        /// <summary>        /// 在选定的记录上面插入一笔记录        /// </summary>        public void InsertRow()        {            if (dataGridView1.SelectedRows.Count >= 1)            {                int iIndex = dataGridView1.SelectedRows[0].Index;                dataGridView1.Rows.Insert(iIndex, 1);            }        }
[解决办法]
是你cells超出范围不是rows
[解决办法]
C# code
  while (this.dataGridView1.Rows.Count != 0)  {    dataGridView1.Rows.Clear();  } 

热点排行