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

DataGridView排序完成時觸發的事件解决方案

2012-03-05 
DataGridView排序完成時觸發的事件界面有2個DataGridView---dgva,dgvb,dgva的數據源為通過查詢得到,為泛型

DataGridView排序完成時觸發的事件
界面有2個DataGridView---dgva,dgvb,dgva的數據源為通過查詢得到,為泛型數據源。當dgva中選擇的行改變時,自動跟新dgvb的數據源。用的是dgvCIQBargNO1_SelectionChanged事件。
代碼如下:

private void dgvCIQBargNO1_SelectionChanged(object sender, EventArgs e)
  {
 this.dgvb.DataSource = bitem.GetBargainPNList(this.dgva.SelectedRows[0].Cells[0].Value.ToString());
}

問題:當我點擊列標題進行排序時,出現此錯誤----Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index

謝謝!

[解决办法]
bb_chen,你试试在DEBUG模式下用WATCH窗口查看一下dgva.SelectedRows这个集合是否为空,我想或许是因为在发生排序事件时,GridView自动将SelectedIndex设置为-1,此时出发了SelectionChanged事件,同时SelectedRows集合为空,导致了上述异常,解决该问题可以在SelectionChanged事件中添加一个判断,如下:

C# code
private   void   dgvCIQBargNO1_SelectionChanged(object   sender,   EventArgs   e) {     if (dgva.SelectedIndex >= 0)    {        this.dgvb.DataSource   =   bitem.GetBargainPNList(this.dgva.SelectedRows[0].Cells[0].Value.ToString());         dgvb.DataBind();    }}
[解决办法]
先debug吧

热点排行