我的Telerik OpenAccess ORM为我映射并执行存储过程,返回一个object []数组作为结果。
现在我想将这个结果绑定到我的datagridview,它有4列设置,但我很难做到这一点。
哪种方法最好?
答案 0 :(得分:2)
不幸的是,DataGridView
控件(与支持Windows窗体中数据绑定的其他控件一样)无法接受object[]
作为其数据源。虽然它不会引发异常,但它无法通过反射发现属性/列,因为数组中的每个项都只是object
类型。您需要将数组的元素复制到强类型列表中,或者替换为非通用集合,例如ArrayList
(使用不同的逻辑来发现其元素的属性)并绑定到此新集合。
答案 1 :(得分:2)
DataGridView刚绑定到对象的属性。
因此,您可以转换对象[]以使您的datagridview可以读取。
var datasource = from p in (object[])
select new
{
Column1 = p.GetType().GetProperty("property1").GetValue(p, null),
Column2 = p.GetType().GetProperty("property2").GetValue(p, null),
Column3 = p.GetType().GetProperty("property3").GetValue(p, null),
Column4 = p.GetType().GetProperty("property4").GetValue(p, null),
};
dataGridView1.DataSource = datasource;
dataGridView1.Columns[0].DataPropertyName = "Column1";
dataGridView1.Columns[1].DataPropertyName = "Column2";
dataGridView1.Columns[2].DataPropertyName = "Column3";
dataGridView1.Columns[3].DataPropertyName = "Column4";