2012-11-12 73 views
1

我在我的WinForms應用程序上有一個datagridview,它顯示客戶端正在處理的案例列表。雙擊datagridview上的'CaseNo'列將打開一個特定於所選案例的新表單。雙擊事件代碼如下:DataGridView列對EventArgs中的結果進行排序雙擊時出錯

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將打開frmCase瓊斯。 然而,如果你第一次雙擊名稱列按字母順序排序如下:

案例名稱

2瓊斯

1史密斯

3沃爾特

然後點擊2將現打開史密斯案(而不是瓊斯應該)。

似乎排序後,雙擊一個單元格會返回之前佔據該行的值(就像數據源未被排序,即使它已在用戶屏幕上排序)。

有人可以請告訴我如何改正這一點。

回答

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; 
    } 
} 
+0

謝謝你的偉大工程 - 唯一修正需要注意的是,在C#應該是方括號。 。 。 ((DataGridView中)發送方).Rows [e.RowIndex] .Cells [e.ColumnIndex] .Value.ToString(); – PJW

+0

很高興幫助 - 我更喜歡VB.NET的人,所以感謝您的建議。 –