将Object中的2维数组加载到devexpress gridcontrol中

时间:2016-01-14 04:28:27

标签: c# reflection devexpress

我从c#.net应用程序调用Matlab函数。以下代码调用函数,该函数返回包含字符串和双精度的二维数组。

object result = null;

matlab.Feval("matlabTest", 1, out result);

如果我在调试时将鼠标悬停在result上,我可以看到result {object[1]}是一个包含{object[53,13]}字符串和双精度的正确二维数组。如何在DevExpress result中显示对象GridControl

2 个答案:

答案 0 :(得分:1)

绑定到二维数组并不特定于WinForms。如果使用标准DataGridView,则无法获取数据。你需要一个清单。因此,将数组转换为列表以显示数据:

object[,] result = new object[10, 5];
for(int i = 0; i < 10; i++) {
    result[i, 0] = (double)i;
    result[i, 1] = "test";
    result[i, 2] = (double)i;
    result[i, 3] = "test";
    result[i, 4] = (double)i;
}
List<object> list = new List<object>();
for(int i = 0; i < result.GetLength(0); i++) {
    list.Add(new { Field1 = result[i, 0], Field2 = result[i, 1], Field3 = result[i, 2], Field4 = result[i, 3], Field5 = result[i, 4] });
}
gridControl1.DataSource = list;

enter image description here

答案 1 :(得分:0)

参考文档示例:How to bind the XtraGrid to a two-dimensional array

  

XtraGrid本身不支持这种数据源。   但是,您可以创建一个包装类,它实现了   必要的接口,并通过它们提供对阵列数据的访问。在   在这个例子中,我们为二维数组创建了一个通用的包装器   实现IList和ITypedList接口的基本成员。

由于@Gosha_Fighen向您展示了一个示例,该示例还将该二维数组转换为XtraGrid支持的数据源。您必须将此数组转换为IList或Data表,以将其与网格控件绑定。

在指定的示例中,我们传递数组,它将转换为IList的类型。

希望这个帮助