Ошибка Datagridview при попытке открыть форму - PullRequest
0 голосов
/ 08 февраля 2012

Я использую этот код для открытия формы.Этот же код открывает другие формы по всему моему приложению, но в этом случае он вызывает ошибку, и я не уверен, почему.

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'.

Представление таблицы данных заполняется следующим образом:

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

Ошибка вызывается жирной линией.Любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 08 февраля 2012

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();
    }
  }
}

надеяться, что это поможет вам ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...