2013-04-23 3 views
2

를 한 후 I DataTable에 일련 번호 열을 추가하려면 다음과 같은 코드가 있습니다 그러나설정 일련 번호가 이미 데이터

public void AddAutoIncrementColumn(DataTable dt) 
{ 
    DataColumn column = new DataColumn(); 
    column.DataType = System.Type.GetType("System.Int32"); 
    column.AutoIncrement = true; 
    column.AutoIncrementSeed = 0; 
    column.AutoIncrementStep = 1; 
    dt.Columns.Add(column); 
} 

,이 값이 테이블에 이미있는 모든 행의 빈됩니다; AutoIncrement는이 열이 추가 된 후에 추가 된 새 행에 대해서만 트리거 된 것으로 보입니다. 이미 존재하는 행에 대한 자동 번호 값을 설정하는 방법이 있습니까?

+1

열을 추가 한 후에는 기존 행을 모두 올릴 수 있습니다. –

+0

데이터를 추가하기 전에 _ 열을 추가 할 수 있습니까? –

+0

@D 스탄 틀리,'OleDbDataAdapter.Fill()'을 사용하는 것과 같이 먼저 추가 할 수없는 경우가 있습니다. – sigil

답변

6

행이 이미 테이블에있을 때 AutoIncrement 기능을 트리거 할 수 있다고 생각하지 않습니다. 그러나 수동으로 쉽게 테이블을 업데이트 할 수 있습니다 :

public void AddAutoIncrementColumn(DataTable dt) 
{ 
    DataColumn column = new DataColumn(); 
    column.DataType = System.Type.GetType("System.Int32"); 
    column.AutoIncrement = true; 
    column.AutoIncrementSeed = 0; 
    column.AutoIncrementStep = 1; 
    dt.Columns.Add(column); 
    int index = -1; 
    foreach (DataRow row in dt.Rows) 
    { 
     row.SetField(column, ++index); 
    } 
} 
+0

LINQ를 사용하여 어떻게 할 수 있습니까? –

관련 문제