是否可以在运行时创建一个新的 DataRow 对象并为其添加列?
// How can I specify column names for this data row object?
DataRow row = new DataRow();
不,DataRow 被设计为 DataTable 的子项,DataTable 具有添加列所需的访问器。如果您可以直接操作 DataRows,则可以创建一个“锯齿状表”,其中的行具有不同的列数/顺序。这通常是一件坏事,所以它只是没有完成。
如果您想向 DataRow 添加一列,请将您的 Row 添加到 DataTable,向该 DataTable 添加一列,然后再次查看您的 DataRow。
我不认为您可以将列添加到数据行,但您当然可以添加到数据表中。下面是一些为 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
该代码使用枚举。我从这个页面得到了一些想法。这个想法是您可以调用 AddColumn 方法将您喜欢的任何列添加到数据表中。