将GridView绑定到Dynamic或ExpandoObject对象

GR7*_*GR7 17 .net orm gridview dynamic expandoobject

我正在使用Rob Conery的Massive ORM,而我无法将结果绑定ExpandoObjectGridView.

我确实找到了另一个建议使用名为即兴的框架的Stackoverflow问题,但我不确定这是否适用于此.如果您知道,请提供代码示例以实际转换ExpandoObjectGridView控件可以绑定的内容.

最糟糕的情况是,是否有人为Massive实现了一个额外的方法(可以共享)将结果转换ExpandoObject为POCO?

任何帮助是极大的赞赏.谢谢.

Bri*_*nga 50

由于无法绑定到ExpandoObject,因此可以将数据转换为DataTable.这种扩展方法将为您做到这一点.我可能会将此内容提交给Massive.

/// <summary>
/// Extension method to convert dynamic data to a DataTable. Useful for databinding.
/// </summary>
/// <param name="items"></param>
/// <returns>A DataTable with the copied dynamic data.</returns>
public static DataTable ToDataTable(this IEnumerable<dynamic> items) {
    var data = items.ToArray();
    if (data.Count() == 0) return null;

    var dt = new DataTable();
    foreach(var key in ((IDictionary<string, object>)data[0]).Keys) {
        dt.Columns.Add(key);
    }
    foreach (var d in data) {
        dt.Rows.Add(((IDictionary<string, object>)d).Values.ToArray());
    }
    return dt;
}
Run Code Online (Sandbox Code Playgroud)

  • 那么你怎么能得到两种方式的数据绑定呢 (2认同)