【问题标题】:Import data row to datatable using dataview使用数据视图将数据行导入数据表
【发布时间】:2012-07-10 19:41:52
【问题描述】:

我想在数据视图中插入一行数据表。我正在使用以下代码将数据视图插入数据表,但它返回错误。

Unable to cast object of type 'System.Data.DataRowView' to type 'System.Data.DataRow'.

这是我的部分代码:

string empid= lbxempname.Items[i].Text.Substring(0,8);
DataView dv = new DataView();
dv = DS.DefaultView;
dv.RowFilter = "fldempid='" + empid + "'";
foreach (DataRow Dr in dv) {
  DST.ImportRow(Dr);
}

【问题讨论】:

  • 你试过这个MyDataTable.Rows.Add(MyDataView.Item(0).DataRow.ItemArray)

标签: c# asp.net datatable


【解决方案1】:

一个DataView 包含DataRowViews,它有一个属性Row 引用DataRow

foreach (DataRowView drv in dv)
{
    DataRow dr = drv.Row;
}

但是,如果该行属于另一个 DataTable,则不能将该行导入 DataTable。我将使用LINQ-To-DataSet 过滤您的行,并使用CopyToDataTable 从中创建一个新的DataTable

例如:

DataTable tblFiltered = DS.AsEnumerable()
                          .Where(r => r.Field<string>("fldempid") == empid)
                          .CopyToDataTable();

【讨论】:

    【解决方案2】:

    这可能有帮助吗?

    foreach (DataRow row in dv)
    {
        dt.LoadDataRow(row.ItemArray);
    }
    

    【讨论】:

      【解决方案3】:

      试试这个:

      DST = dv.ToTable();
      

      这行代码在您为 DataView 设置过滤器之后执行。

      【讨论】:

        【解决方案4】:

        试试这个

        DataView dview = new DataView();
        DataTable dtable = new DataTable();
        dtable = dview.Table.Clone();
        foreach(DataRowView drowview in dview)
        dtable.ImportRow(drowview.Row);
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-12-17
          • 1970-01-01
          相关资源
          最近更新 更多