尝试打开表单时出现Datagridview错误

时间:2012-02-08 00:56:36

标签: c# winforms 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未处理     Message =无法将'System.Data.DataViewManagerListItemTypeDescriptor'类型的对象强制转换为'System.Data.DataRowView'。

datagridview正在填充:

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

错误是由粗体线触发的。任何帮助将不胜感激。

1 个答案:

答案 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();
    }
  }
}
希望能帮到你......