我有一张桌子,我根据某些标准存储数据。两个表都是打字表 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包含以下字段:key,value,tablename(此数据所针对的表),columnname。
在运行时,我为tblShipper或任何其他表创建了一个数据集,然后我将数据从tblParsedData加载到数据表中。现在我需要将来自tblParsedData数据表的数据插入到tblShipper Dataset中。将此数据集绑定到gridview,以便用户可以查看和验证/编辑数据,然后将其保存到数据库(tblShipper)中。
答案 0 :(得分:0)
我终于找到了办法。我使用反射来执行此操作,使用反射来加载类型行的所有属性并将其与列名称进行比较。如果匹配,请使用反射设置值。简单!
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;
}
}
}
从以下帖子中使用了一点