2010-05-15 11 views

Respuesta

20

¿Podría intentar algo como esto tal vez?

private void AddAutoIncrementColumn() 
{ 
    DataColumn column = new DataColumn(); 
    column.DataType = System.Type.GetType("System.Int32"); 
    column.AutoIncrement = true; 
    column.AutoIncrementSeed = 1000; 
    column.AutoIncrementStep = 10; 

    // Add the column to a new DataTable. 
    DataTable table = new DataTable("table"); 
    table.Columns.Add(column); 
} 
+0

Al añadirse a una DataTable existente con datos en ella, será este rellenar automáticamente la nueva columna en las filas existentes? – Lunyx

1

No haces incremento automático en DataTable (o front-end para el caso), a menos que desee que su aplicación sólo una única aplicación de usuario.

Si necesita la autoincrementación, solo hágalo en la base de datos, luego recupere la identificación autoincrementada producida desde la base de datos a su front-end.

Véase mi respuesta aquí, sólo cambia el SqliteDataAdapter a SqlDataAdapter, SqliteConnection a SqlConnection, etc: anyway see why I get this "Concurrency Violation" in these few lines of code??? Concurrency violation: the UpdateCommand affected 0 of the expected 1 records

+1

Estoy leyendo datos del archivo plano y necesito agregar un número de línea a DataTable; hay momentos en que esto es válido, y no hará que mi aplicación sea un usuario único. – MrTelly

+0

Sí, o para la salida ..... Estoy generando resultados que se compone de múltiples lecturas independientes, que deben terminar en una secuencia única. Es un uso local muy importante de DataTable ...... aislamiento similar como "usuario único", pero no es lo mismo en absoluto. –

0

Sólo mis dos centavos. Incremento automático es útil en una aplicación Winform (stand alone como Michael Buen dicho con razón), es decir:

DatagridView está siendo utilizado para visualizar los datos que no tienen un "campo clave", el mismo puede ser utilizado para enumeración.

0

no creo que es una buena idea usar incremento automático en tabla de datos si está utilizando insertar y eliminar a una tabla de datos porque no se rearranget el número, sin i final a compartir una pequeña idea de cómo podemos utilizar el manual autoincrement .

  DataTable dt = new DataTable(); 
     dt.Columns.Add("ID",typeof(int)); 
     dt.Columns.Add("Produto Nome", typeof(string)); 

     dt.Rows.Add(null, "A"); 
     dt.Rows.Add(null, "B"); 
     dt.Rows.Add(null, "C"); 

     for(int i=0;i < dt.Rows.Count;i++) 
     { 
      dt.Rows[i]["ID"] = i + 1; 
     } 

siempre al finalizar la inserción o eliminar debe ejecutar este bucle

  for(int i=0;i < dt.Rows.Count;i++) 
     { 
      dt.Rows[i]["ID"] = i + 1; 
     } 
+0

Esto es realmente confuso. Y cambiar 'DataTable' no cambia el DB, y creo que esta es la parte esencial de la pregunta de OPs. – andr

6
DataTable table = new DataTable("table"); 


DataColumn dc= table.Columns.Add("id", typeof(int)); 
     dc.AutoIncrement=true; 
     dc.AutoIncrementSeed = 1; 
     dc.AutoIncrementStep = 1; 

// Add the new column name in DataTable 

table.Columns.Add("name",typeof(string)); 

    table.Rows.Add(null, "A"); 
    table.Rows.Add(null, "B"); 
    table.Rows.Add(null, "C"); 
1

Si el DataTable ya está rellenada. se puede utilizar a continuación el método

void AddAndPopulateDataTableRowID(DataTable dt, string col, bool isGUID) 
    { 
     if(isGUID) 
      dt.Columns.Add(col, typeof(System.Guid)); 
     else 
      dt.Columns.Add(col, typeof(System.Int32)); 

     int rowid = 1; 
     foreach (DataRow dr in dt.Rows) 
     { 
      if (isGUID) 
       dr[col] = Guid.NewGuid(); 
      else 
       dr[col] = rowid++; 
     } 

    } 
Cuestiones relacionadas