读书人

DataGridView排序完成的事件解决

发布时间: 2012-03-05 11:54:01 作者: rapoo

DataGridView排序完成的事件
界面有2DataGridView---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吧

读书人网 >C#

热点推荐