Author:水如烟
有时候我们想将数组的内容显示在DataGrid上。怎么做呢,MSDN关于DataGrid的说明上说,“也可以将 DataGrid 绑定到 ArrayListArrayList 的一个功能是它可以包含多种类型的对象,但当列表中的所有项与第一项具有相同的类型时,DataGrid 只能绑定到这类列表。这意味着所有的对象必须是同一种类型,或者必须从与列表中第一项相同的类继承。例如,如果列表中的第一项为 Control,则第二项可能为 TextBox(它从 Control 继承)。另一方面,如果第一项为 TextBox,则第二个对象就不可能是 Control。此外,ArrayList 在绑定时必须包含项目。空 ArrayList 会导致空网格。当绑定到 ArrayList 时,请将 DataGridTableStyle MappingName 设置为“ArrayList”(类型名)”。相关的示例有,只是具体的出处我忘了。以下提供另一种方法,就是将数组转换为对象数组(如果已经是对象数组那更好),再转换为表(DataTable)。当然,按我的习惯,转换方法肯定是通用的。

一、示例数据

用一组表示学生基本信息的数据吧。数据意义:姓名,学号,性别,年龄。(以下数据如有雷同,纯属巧合,请勿对号入座)
马晓锋,A001005,15,男
刚小鸣,A002008,14,男
薛兰微,A002004,16,女
东望凉,A001002,15,男
王苍岳,A002009,15,女

二、建相应的类(对象)

上面定义为什么用中文?主要是为了在DataGrid是显示方便。为了方便地将数组转换为对象数组,我们再建一个类:


三、将示例的数据转换为对象数组
HOW TO:对象数组转换为表(DataTable)        Dim mStudent As New Student
HOW TO:对象数组转换为表(DataTable)        
With mStudent
HOW TO:对象数组转换为表(DataTable)            .Add(
"马晓锋""A001005"15"")
HOW TO:对象数组转换为表(DataTable)            .Add(
"刚小鸣""A002008"14"")
HOW TO:对象数组转换为表(DataTable)            .Add(
"薛兰微""A002004"16"")
HOW TO:对象数组转换为表(DataTable)            .Add(
"东望凉""A001002"15"")
HOW TO:对象数组转换为表(DataTable)            .Add(
"王苍岳""A002009"15"")
HOW TO:对象数组转换为表(DataTable)        
End With
HOW TO:对象数组转换为表(DataTable)
四、将对象数组转化为表(DataTable)的静态类
End Class
五、试试看
HOW TO:对象数组转换为表(DataTable)        Dim Table As DataTable
HOW TO:对象数组转换为表(DataTable)        Table 
= ArrayToTable.Convert(mStudent.Items)
HOW TO:对象数组转换为表(DataTable)        
Me.DataGrid1.DataSource = Table
HOW TO:对象数组转换为表(DataTable)        
Me.DataGrid1.CaptionText = Table.TableName
HOW TO:对象数组转换为表(DataTable)
以下为全部代码。

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-12-21
  • 2021-12-12
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-02-04
  • 2021-08-19
  • 2021-11-25
  • 2022-12-23
相关资源
相似解决方案