将列添加到新DataRow

时间:2012-04-11 14:34:02

标签: asp.net .net datarow

是否可以创建新的DataRow对象并在运行时向其添加列?

// How can I specify column names for this data row object?
DataRow row = new DataRow();

2 个答案:

答案 0 :(得分:7)

没有。 DataRow设计为DataTable的子级,DataTable具有添加列所需的访问器。如果您可以直接操作DataRows,则可以使用具有不同列数/订单的行创建“锯齿状表”。这通常是一件坏事,所以它还没有完成。

如果要向DataRow添加列,请将行添加到DataTable,向该DataTable添加一列,然后再次查看DataRow。

答案 1 :(得分:3)

我认为您不能将列添加到数据行,但您当然可以添加到数据表中。这是为VB执行此操作的一些代码:

Enum enumType
    StringType = 1
    BooleanType = 2
    DateTimeType = 3
    DecimalType = 4
    DoubleType = 5
    IntegerType = 6
    CharType = 7
End Enum

Private Shared ReadOnly Property ColumnDataType(ByVal ThisDataType As enumType) As String
    Get

        'DataType values supported are:
        'System.Byte, System.Char, System.DateTime, System.Decimal, System.Double, System.Int16, System.Int32, System.Int64, 
        'System.SByte, System.Single 

        Select Case ThisDataType
            Case enumType.BooleanType
                Return "System.Boolean"
            Case enumType.DateTimeType
                Return "System.DateTime"
            Case enumType.DecimalType
                Return "System.Decimal"
            Case enumType.DoubleType
                Return "System.Double"
            Case enumType.IntegerType
                Return "System.Int32"
            Case enumType.StringType
                Return "System.String"
            Case enumType.CharType
                Return "System.Char"
            Case Else
                cnst.ErrorDisplay("No such data type as " & ThisDataType.ToString)
                Return Nothing
        End Select

    End Get
End Property
Public Shared Sub AddColumn(ByRef dt As DataTable, ByVal ColumnName As String, ByVal ThisDataType As enumType)

    Dim dc As DataColumn = New DataColumn(ColumnName)
    dc.DataType = System.Type.GetType(ColumnDataType(ThisDataType))
    dt.Columns.Add(dc)

End Sub

代码使用枚举。我从this page得到了一些想法。我们的想法是,您可以调用AddColumn方法将任何您喜欢的列添加到数据表中。