2012-02-08 18 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.DataRowView」を入力するタイプ「System.Data.DataViewManagerListItemTypeDescriptor」のオブジェクトをキャストすることができません。

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は常にnullとして出力され、フォームは開かれません。何か案は? – korrowan

+0

@korrowanあなたはselRow.DataBoundItemが保持するものを投稿できますか?どのタイプですか? – punker76

+0

私はDataBoundItemが何をしているのか、それが保持するはずのものがわからないので、より具体的にすることができます。 – korrowan

関連する問題