【问题标题】:Typed Data Row - insert data based on the column nameTyped Data Row - 根据列名插入数据
【发布时间】:2015-06-07 00:26:53
【问题描述】:

我有一个表,我根据某些标准在其中存储数据。这两个表都是类型表。
tblShipper 大约有 10 列,tblParsedData 有 3 列(ID、FieldName、FieldValue)

我从 tblShipper 创建了一行,为每一列添加 FieldValue。但是,正如我们所知,键入的行将显示列名。

我找不到类似下面的代码或更好的方法。

MyDataset.tblShipperRow _newRow = _tblShipper.NewtblShipperRow();
foreach(tblParsedDataRow _row in _parsedDataForShipper.Rows)
    _newRow[_row.FieldName] = _row.FieldValue;
_tblShipper.Rows.Add(_newRow);

更多详情:
tblParsingParams 存储参数,我们使用这些参数从文件中读取数据,解析我们读取的数据并将其以键/值格式存储在 tblParsedData 中。

tblParsedData 具有以下字段:键、值、表名(此数据所在的表)、列名。

在运行时,我为 tblShipper 或任何其他表创建了一个数据集,然后我将 tblParsedData 中的数据加载到数据表中。现在我需要将 tblParsedData 数据表中的数据插入到 tblShipper 数据集中。将此数据集绑定到gridview,以便用户可以查看和验证/编辑数据,然后将其保存到数据库(tblShipper)中。

重复:https://stackoverflow.com/questions/29388544/insert-data-into-typed-row-on-the-fly-based-on-column-name

【问题讨论】:

    标签: c# asp.net reflection dataset datarow


    【解决方案1】:

    我终于想出了一个办法。我使用反射来做到这一点,使用反射加载类型行的所有属性并将其与列名进行比较。如果匹配,则使用反射设置值。简单!

    MyDataset.tblShipperRow _newRow = _tblShipper.NewtblShipperRow();
    foreach(tblParsedDataRow _row in _parsedDataForShipper.Rows)
    {    
          foreach (var property in _newRow.GetType().GetProperties())
          {
                if (_row.FieldName == property.Name)
                {
                     property.SetValue(_newRow, _row.FieldValue, null);
                     break;
                }
          }
    }
    

    从下面的帖子中使用了一点

    How to set Property value using Reflection?

    【讨论】:

      猜你喜欢
      • 2019-07-13
      • 2015-07-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多