2012-02-08 114 views
0

我正在使用此代碼打開表單。這個相同的代碼會在我的應用程序中打開其他表單,但在這種情況下,它會導致錯誤,我不知道爲什麼。Datagridview嘗試打開表單時出錯

private void dataGridView2_CellDoubleClick(object sender, DataGridViewCellEventArgs e) 
{ 
    System.Data.DataRowView SelectedRowView; 
    waterDataSet.DEMRow SelectedRow; 

    **SelectedRowView = (System.Data.DataRowView)waterDataSetBindingSource.Current;** 
    SelectedRow = (waterDataSet.DEMRow)SelectedRowView.Row; 

    frmWater WaterForm = new frmWater(this); 
    WaterForm.LoadWaterAcct(SelectedRow.WATER_ACCOUNT, null); 
    WaterForm.Show(); 
} 

我正的錯誤是:

System.InvalidCastException了未處理 消息=無法轉換類型 'System.Data.DataViewManagerListItemTypeDescriptor' 的目的爲類型 'System.Data.DataRowView' 。

在DataGridView正在填充這個:

public void LoadWaterAcct(String waterAcct, String tableName) 
{ 
    aRTableAdapter.FillByWaterAct(waterDataSet.AR, waterAcct); 
} 

該錯誤是由加粗線觸發。任何幫助將不勝感激。

回答

0

dataGridViewRow.DataBoundItem應該包含數據。然後,你可以:

private void dataGridView2_CellDoubleClick(object sender, DataGridViewCellEventArgs e) 
{ 
    var selRow = this.yourDataGridView.SelectedRows.FirstOrDefault(); 
    // or 
    // var selRow = this.yourDataGridView.Rows[e.RowIndex]; 

    if (selRow != null) { 
    var selRowData = selRow.DataBoundItem as waterDataSet.DEMRow; 
    if (selRowData != null) { 
     frmWater WaterForm = new frmWater(this); 
     WaterForm.LoadWaterAcct(selRowData.WATER_ACCOUNT, null); 
     WaterForm.Show(); 
    } 
    } 
} 

希望幫助你...

+0

punker76感謝您的答覆。當我使用該代碼時,selRowData將始終顯示爲空,因此表單無法打開。有任何想法嗎? – korrowan 2012-02-08 15:25:27

+0

@korrowan你可以發佈什麼selRow.DataBoundItem持有?是哪種類型? – punker76 2012-02-08 15:32:09

+0

你可以更具體,因爲我不確定什麼是DataBoundItem或它應該保持什麼。 – korrowan 2012-02-08 15:47:02

相關問題