如何绑定列表到datagridview的在C#Windows窗体

问题描述:

我的代码是如何绑定列表<dynamic>到datagridview的在C#Windows窗体

List<dynamic> source=GetDatagridSource(); 
datagridview1.AutoGenerateColumns = true; 
datagridview1.DataSource = source; 

这里GetDatagridSource(),其中具有列的动态数字列表的形式返回数据。(列数不固定)。

我想将此结果绑定到datagridview1。

我知道这个问题很老,但它可能会帮助有人想要这样做。

创建来自动态对象的DataTable和数据表结合的GridView

public static DataTable GetDataTableFromDynamicObject (List<dynamic> listData) 
{ 
    DataTable table = new DataTable (); 
    if (listData.Count > 0) 
    { 
     var firstRow = (IEnumerable<KeyValuePair<string, JToken>>) (JObject) listData.First (); 

     foreach (KeyValuePair<string, JToken> property in firstRow.OrderBy (x => x.Key)) 
      table.Columns.Add (new DataColumn (property.Key)); 

     foreach (var data in listData) 
     { 
      DataRow row = table.NewRow (); 
      var record = (IEnumerable<KeyValuePair<string, JToken>>) (JObject) data; 

      foreach (KeyValuePair<string, JToken> kvp in record) 
      { 
       row [ kvp.Key ] = kvp.Value; 
      } 
      table.Rows.Add (row); 
     } 
    } 
    return table; 
}