2014-03-28 35 views
1

我有一个带有数据的datatable。我想添加composite primary key到这个表(比如2列)并检查数据表中是否有任何行验证了我们设置的复合主键。 我所做的是我已经添加了复合主键对DataTable在数据表中对现有数据执行复合主键

DataColumn[] keys = new DataColumn[2]; 
keys[0] = dt.Columns["EmpId"]; 
keys[1] = dt.Columns["EmpName"]; 
dt.PrimaryKey = keys; 

但我无法弄清楚如何检查现有数据,并设置相应行的RowError。

回答

0

尝试使用此:

1>用于设置行的错误

private void SetRowErrors(DataTable table) 
{ 
    for(int i = 0; i < 10; i++) 
    { 
     table.Rows[i].RowError = "ERROR: " 
      + table.Rows[i][1]; 
    } 
    DataSet dataSet = table.DataSet; 
    TestForErrors(dataSet); 
} 

private void TestForErrors(DataSet dataSet) 
{ 
    if(dataSet.HasErrors) 
    { 
     foreach(DataTable tempDataTable in dataSet.Tables) 
     { 
      if(tempDataTable.HasErrors) 
       PrintRowErrors(tempDataTable); 
     } 
     dataGrid1.Refresh(); 
    } 
} 

private void PrintRowErrors(DataTable table) 
{ 
    foreach(DataRow row in table.Rows) 
    { 
     if(row.HasErrors) 
     { 
      Console.WriteLine(row.RowError); 
     } 
    } 
} 

2>检查现有数据用于复合键冲突:参见下面

Check existing data

共享的链路
+0

我无法弄清楚如何检查现有数据r复合键违规。 – quitprog

+0

@ parixit-我已经更新了我的答案,用于检查icomposite关键违规的现有数据是否提及。如果您满意答案,请不要忘记投票并标记为答案。 –

相关问题