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

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吧