DataColumn.DataType Propiedad
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Obtiene o establece el tipo de datos almacenados en la columna.
public:
property Type ^ DataType { Type ^ get(); void set(Type ^ value); };
[System.ComponentModel.TypeConverter(typeof(System.Data.ColumnTypeConverter))]
public Type DataType { get; set; }
public Type DataType { get; set; }
[System.ComponentModel.TypeConverter(typeof(System.Data.ColumnTypeConverter))]
[System.Data.DataSysDescription("DataColumnDataTypeDescr")]
public Type DataType { get; set; }
[<System.ComponentModel.TypeConverter(typeof(System.Data.ColumnTypeConverter))>]
member this.DataType : Type with get, set
member this.DataType : Type with get, set
[<System.ComponentModel.TypeConverter(typeof(System.Data.ColumnTypeConverter))>]
[<System.Data.DataSysDescription("DataColumnDataTypeDescr")>]
member this.DataType : Type with get, set
Public Property DataType As Type
Valor de propiedad
Objeto Type que representa el tipo de datos de la columna.
- Atributos
Excepciones
La columna ya tiene datos almacenados.
Ejemplos
En el ejemplo siguiente se agregan columnas de varios tipos de datos a y DataTable, a continuación, se agrega una fila a la tabla.
public DataTable MakeDataTable(){
DataTable myTable;
DataRow myNewRow;
// Create a new DataTable.
myTable = new DataTable("My Table");
// Create DataColumn objects of data types.
DataColumn colString = new DataColumn("StringCol");
colString.DataType = System.Type.GetType("System.String");
myTable.Columns.Add(colString);
DataColumn colInt32 = new DataColumn("Int32Col");
colInt32.DataType = System.Type.GetType("System.Int32");
myTable.Columns.Add(colInt32);
DataColumn colBoolean = new DataColumn("BooleanCol");
colBoolean.DataType = System.Type.GetType("System.Boolean");
myTable.Columns.Add(colBoolean);
DataColumn colTimeSpan = new DataColumn("TimeSpanCol");
colTimeSpan.DataType = System.Type.GetType("System.TimeSpan");
myTable.Columns.Add(colTimeSpan);
DataColumn colDateTime = new DataColumn("DateTimeCol");
colDateTime.DataType = System.Type.GetType("System.DateTime");
myTable.Columns.Add(colDateTime);
DataColumn colDecimal = new DataColumn("DecimalCol");
colDecimal.DataType = System.Type.GetType("System.Decimal");
myTable.Columns.Add(colDecimal);
DataColumn colByteArray = new DataColumn("ByteArrayCol");
colByteArray.DataType = System.Type.GetType("System.Byte[]");
myTable.Columns.Add(colByteArray);
// Populate one row with values.
myNewRow = myTable.NewRow();
myNewRow["StringCol"] = "Item Name";
myNewRow["Int32Col"] = 2147483647;
myNewRow["BooleanCol"] = true;
myNewRow["TimeSpanCol"] = new TimeSpan(10,22,10,15,100);
myNewRow["DateTimeCol"] = System.DateTime.Today;
myNewRow["DecimalCol"] = 64.0021;
myNewRow["ByteArrayCol"] = new Byte[] { 1, 5, 120 };
myTable.Rows.Add(myNewRow);
return myTable;
}
Public Function MakeDataTable() As DataTable
Dim myTable As DataTable
Dim myNewRow As DataRow
' Create a new DataTable.
myTable = New DataTable("My Table")
' Create DataColumn objects of data types.
Dim colString As New DataColumn("StringCol")
colString.DataType = System.Type.GetType("System.String")
myTable.Columns.Add(colString)
Dim colInt32 As New DataColumn("Int32Col")
colInt32.DataType = System.Type.GetType("System.Int32")
myTable.Columns.Add(colInt32)
Dim colBoolean As New DataColumn("BooleanCol")
colBoolean.DataType = System.Type.GetType("System.Boolean")
myTable.Columns.Add(colBoolean)
Dim colTimeSpan As New DataColumn("TimeSpanCol")
colTimeSpan.DataType = System.Type.GetType("System.TimeSpan")
myTable.Columns.Add(colTimeSpan)
Dim colDateTime As New DataColumn("DateTimeCol")
colDateTime.DataType = System.Type.GetType("System.DateTime")
myTable.Columns.Add(colDateTime)
Dim colDecimal As New DataColumn("DecimalCol")
colDecimal.DataType = System.Type.GetType("System.Decimal")
myTable.Columns.Add(colDecimal)
' Populate one row with values.
myNewRow = myTable.NewRow()
myNewRow("StringCol") = "Item Name"
myNewRow("Int32Col") = 2147483647
myNewRow("BooleanCol") = True
myNewRow("TimeSpanCol") = New TimeSpan(10,22,10,15,100)
myNewRow("DateTimeCol") = System.DateTime.Today
myNewRow("DecimalCol") = 64.0021
myNewRow("ByteArrayCol") = New [Byte]() {1, 5, 120}
myTable.Rows.Add(myNewRow)
MakeDataTable = myTable
End Function
Comentarios
Establecer el DataType valor es muy importante para garantizar la creación y actualización correctas de datos en un origen de datos.
La DataType propiedad admite los siguientes tipos de datos base de .NET Framework:
así como el siguiente tipo de matriz:
Byte[]
Se genera una excepción al cambiar esta propiedad después de que la columna haya comenzado a almacenar datos.
Si AutoIncrement se establece true
en antes de establecer la DataType propiedad e intenta establecer el tipo en cualquier cosa excepto un tipo entero, se genera una excepción.
Nota
Una columna de tipo Byte[]
de datos requiere un tratamiento especial en determinados casos, ya que, a diferencia de los tipos de datos base de .NET Framework, es un tipo de datos de referencia. Si se usa una columna de tipo Byte[]
de datos como PrimaryKey, o como una Sort clave o RowFilter para , DataViewcualquier cambio en el valor de columna debe implicar la asignación del Byte[]
valor de columna a un objeto de instancia independiente Byte[]
. Esta asignación es necesaria para desencadenar la actualización de los índices internos utilizados por las operaciones de ordenación, filtrado y clave principal. Esto se muestra en el ejemplo siguiente:
byte[] columnValue = (byte[])myDataTable.Rows[0][0];
byte[] newValue = (byte[])columnValue.Clone();
newValue[1] = 2;
myDataTable.Rows[0][0] = newValue;
Nota
Aunque es posible definir una columna como tipo de datos distinto de los tipos de datos base de .NET Framework y Byte[]
, esta columna se tratará como un tipo definido por el usuario, sujeto a las siguientes restricciones de uso. (Para obtener más información sobre los tipos definidos por el usuario, vea Creación y uso de tipos User-Defined)
La columna no puede formar parte de una RowFilter expresión o Select .
Si la columna se usa como PrimaryKey, o como Sort o para , DataViewdebe tratarse como un campo inmutable; los datos de columna no se deben cambiar una vez que se haya agregado a la tabla.
Solo ColumnMapping se puede establecer en
MappingType.Element
.La clase que implementa el tipo de datos de la columna debe marcarse con SerializableAttributey, si es necesario, implementar la ISerializable interfaz o IXmlSerializable .
La compatibilidad con el seguimiento de cambios es limitada. Para utilizar el mecanismo de seguimiento de cambios de la DataTable clase, la clase que implementa el tipo de datos de la columna debe implementar la IChangeTracking interfaz o asumir la responsabilidad de informar DataRow sobre cuándo se ha modificado el valor de columna, ya sea llamando SetModified a en la fila o asignando el objeto de valor de columna a un objeto de valor de columna creado por separado.