2010-03-03 30 views
0

我創建了一個顯示數據表中數據的應用程序。它還提供了用戶界面,可以使用其默認值將新列添加到數據表中。
但問題是,它顯示數據表中新創建的列,但默認值不會來。我必須再次填充數據表才能做到這一點,從而降低了我的應用程序性能。
所以,我怎麼解決這個問題?如何將行重置爲新添加的列,其默認值爲

編輯:當你添加一行到表

obj_dataTable.Columns.Add(columnName); 

int index = obj_dataTable.Columns.IndexOf(obj_dataTable.Columns[columnName]); 

obj_dataTable.Columns[index].DefaultValue = defaultValue; 
+0

一些代碼需要 –

+0

您可以使用obj_dataTable.Columns [列名],而不是查找索引。 – Carra

+0

@Carra:Thnx .... – Royson

回答

1

默認值分配和列尚未分配的值。因此,更改架構時,現有行將不會更新。如果您想要更新表並將默認值應用於現有行的通用方法,那麼Id會創建一個方法,將行從當前數據表複製到新數據表中,並在其中包含額外的列。例如:

void doTableStuff() 
{ 

    DataTable table1 = makeTable(); 
    table1.Rows.Add(new string[] { "Frederic", "Robert" }); 
    table1 = updateTable(table1); 

    if (table1.Rows[0]["Sam"] == "Samantha") 
    { 
     Console.WriteLine("I Was Right!"); 
    } 
    else 
    { 
     Console.WriteLine("I Was Wrong!"); 
    } 

} 

DataTable makeTable() 
{ 
    DataTable dt = new DataTable(); 
    dt.Columns.Add(new DataColumn { ColumnName = "Fred", DataType = typeof(string), DefaultValue = "fred" }); 
    dt.Columns.Add(new DataColumn { ColumnName = "Bob", DataType = typeof(string), DefaultValue = "bob" }); 

    return dt; 

} 

DataTable updateTable(DataTable oldTable) 
{ 
    DataTable newTable = makeTable(); 
    newTable.Columns.Add(new DataColumn { ColumnName = "Sam", DataType = typeof(string), DefaultValue = "Samantha" }); 
    newTable.Merge(oldTable, true, MissingSchemaAction.Add); 
    return newTable; 
} 

對不起,我沒有嘗試運行這個,但你應該明白了。希望工程。

乾杯

相關問題