我正在使用此代码打开表单。这个相同的代码在我的应用程序中打开了其他表单,但在这种情况下,它会导致错误,我不确定原因。
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未处理 Message =无法将'System.Data.DataViewManagerListItemTypeDescriptor'类型的对象强制转换为'System.Data.DataRowView'。
datagridview正在填充:
public void LoadWaterAcct(String waterAcct, String tableName)
{
aRTableAdapter.FillByWaterAct(waterDataSet.AR, waterAcct);
}
错误是由粗体线触发的。任何帮助将不胜感激。
答案 0 :(得分: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();
}
}
}
希望能帮到你......