HOW TO:对象数组转换为表(DataTable)

本文作者水如烟介绍了如何将对象数组转换为DataTable,以便在DataGrid上显示。通过创建一个Student类和StudentBase类,模拟学生信息,并提供一个静态类ArrayToTable实现转换功能。最后展示了转换和绑定DataGrid的示例代码。
摘要由CSDN通过智能技术生成

HOW TO:对象数组转换为表(DataTable)

 

Author:水如烟(http://blog.csdn.net/lzmtw)

Date: 2005-4-15

 

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

 

一、示例数据

用一组表示学生基本信息的数据吧。数据意义:姓名,学号,性别,年龄。(以下数据如有雷同,纯属巧合,请勿对号入座)

马晓锋,A00100515,男

刚小鸣,A00200814,男

薛兰微,A00200416,女

东望凉,A00100215,男

王苍岳,A00200915,女

 

二、建相应的类(对象)

Public Class StudentBase

 

    Public 姓名 As String

 

    Public 学号 As String

 

    Public 年龄 As Integer

 

Public 性别 As String

 

End Class

 

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

 

Public Class Student

 

    Private _Items(-1) As StudentBase '这个就是下面要用到的对象数组了

 

    Public ReadOnly Property Items() As StudentBase()

 

        Get

 

            Return _Items

 

        End Get

 

    End Property

 

 

    Public Sub Add(ByVal Name As String, ByVal NO As String, ByVal Age As Integer, ByVal Sex As String) '添加一个学生

 

        Dim mItem As New StudentBase

 

        With mItem

 

            .姓名 = Name

 

            .学号 = NO

 

            .年龄 = Age

 

            .性别 = Sex

 

        End With

 

        Dim i As Integer = _Items.Length

 

        ReDim Preserve _Items(i)

 

        _Items(i) = mItem

 

    End Sub

 

End Class

 

 

三、将示例的数据转换为对象数组

 

 

        Dim mStudent As New Student

 

        With mStudent

 

            .Add("马晓锋", "A001005", 15, "")

 

            .Add("刚小鸣", "A002008", 14, "")

 

            .Add("薛兰微", "A002004", 16, "")

 

            .Add("东望凉", "A001002", 15, "")

 

            .Add("王苍岳", "A002009", 15, "")

 

        End With

 

 

四、将对象数组转化为表(DataTable)的静态类

 

 

Public Class ArrayToTable

 

    Private Shared _Columns As DataColumn()

 

    Private Shared _Items As Object()

<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值