1

我的 WinForms 应用程序上有一个 datagridview,它显示了客户正在处理的案例列表。双击 datagridview 上的“CaseNo”列会打开一个特定于所选案例的新表单。双击事件代码如下:

private void dataGV_CellCoubleClick(object sender, DataGridCellEventArgs e)
{ 
    if (e.ColumnIndex == 0)
    {
        DataTable table = (DataTable)dataGV.DataSource;
        string strCaseNo = table.Rows[e.RowIndex][e.ColumnIndex].ToString();
        frmCase fC = new frmCase(strCaseNo);
        fC.MdiParent = this.MdiParent;
        fC.Show;
    }
}

案例表格可以正常打开。但是,如果用户之前双击列标题以对 datagridview 应用排序,则双击数据行会打开错误的情况。

例如:

案例名称

1 史密斯

2琼斯

3 沃尔特

最初单击 2 将打开 Jones 的 frmCase。但是,如果您首先双击名称列按字母顺序排序,如下所示:

案例名称

2琼斯

1 史密斯

3 沃尔特

然后现在单击 2 将打开 Smith 案例(而不是应有的 Jones)。

似乎在排序后,双击一个单元格会返回先前占用该行的值(好像数据源尚未排序,即使它已在用户屏幕上排序)。

有人可以告诉我如何纠正这个问题。

4

1 回答 1

3

您正在访问基础表,而不是网格。尝试以下操作:

private void dataGV_CellCoubleClick(object sender, DataGridCellEventArgs e)
{ 
    if (e.ColumnIndex == 0)
    {
        string strCaseNo = ((DataGridView)sender).Rows(e.RowIndex).Cells(e.ColumnIndex).Value.ToString();
        frmCase fC = new frmCase(strCaseNo);
        fC.MdiParent = this.MdiParent;
        fC.Show;
    }
}
于 2012-11-12T15:37:54.410 回答