【问题标题】:Datagridview error when trying to open a form尝试打开表单时出现 Datagridview 错误
【发布时间】:2012-02-29 11:31:39
【问题描述】:

我正在使用此代码打开一个表单。相同的代码会在我的整个应用程序中打开其他表单,但在这种情况下它会导致错误,我不知道为什么。

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

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

【问题讨论】:

    标签: c# winforms datagridview


    【解决方案1】:

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

    希望对你有所帮助...

    【讨论】:

    • punker76 感谢您的回复。当我使用该代码时,selRowData 始终显示为 null,因此表单无法打开。有什么想法吗?
    • @korrowan 你能发布 selRow.DataBoundItem 的内容吗?它是什么类型的?
    • 您能否更具体一些,因为我不确定 DataBoundItem 的作用或它应该包含什么。
    • 不,它不为空。它显示了正确的对象 ID 并具有表信息等,但它绝对不为空。
    • @korrowan 也许这可以帮助你stackoverflow.com/a/895785/920384 另一个问题是,你的datagridview 的数据源是什么?数据表?绑定源?这是我对你的最后一个问题......对不起,如果我不能帮助你
    猜你喜欢
    • 2018-09-27
    • 2017-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-13
    • 2020-11-17
    • 2012-08-09
    • 2012-06-22
    相关资源
    最近更新 更多