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吧