从Datatable创建动态属性

时间:2017-07-21 00:22:18

标签: c# dynamic reflection properties expandoobject

我下面有一个属性。

  public class MfrYearEqpType
  {   
    public string EqpType { get; set; }

    public MfrYearEqpType()
    {
    }
  }

我想为我的类“MfrYearEqpType”创建动态属性(Datatable列名),并从Datatable下面设置值。

DataTable dt = getData();

此表包含26行和10列数据。

我已经通过以下链接。但我不知道如何处理我的案子。

Dynamically adding properties to an Object from an existing static object in C#

我还使用了 ExpandoObject 。我在下面做了样本。

  DataTable dt = getData();

  List<dynamic> expandoList = new List<dynamic>();

  foreach (DataRow row in dt.Rows)
  {
    //create a new ExpandoObject() at each row
   var expandoDict = new ExpandoObject() as IDictionary<String, Object>;
   foreach (DataColumn col in dt.Columns)
   {
      //put every column of this row into the new dictionary
      expandoDict.Add(col.ToString(), row[col.ColumnName].ToString());
   }

   //add this "row" to the list
   expandoList.Add(expandoDict);
   }

但我的目标是创建MfrYearEqpType列表。这样我就可以将MfrYearEqpType的List绑定到Gridview。

请帮我解决这个问题。

1 个答案:

答案 0 :(得分:0)

假设您在这里讨论ASP.NET,您可以直接将数据表绑定到GridView的DataSource属性。

如果您对显示为默认值的这10列感到满意,可以将AutoGenerateColumns属性设置为true。否则,您可能需要根据需要定义<asp:BoundField /><asp:TemplateField />列。绑定字段将允许您至少格式化特定列的值,而模板字段将允许完全自定义,您可以在其中提供定义如何呈现特定字段。