如何使用默认值将行重置为新添加的列

时间:2010-03-03 08:22:17

标签: c# gridview datatable

我创建了一个在数据表中显示数据的应用程序。它还提供用户界面,用于使用其默认值将新列添加到数据表。
但问题是,它在数据表中显示新创建的列,但默认值不会到来。我必须再次填充数据表来执行此操作,这会降低我的应用程序性能。
那么,我该如何克服这个问题...

编辑:

obj_dataTable.Columns.Add(columnName);

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

obj_dataTable.Columns[index].DefaultValue = defaultValue;

1 个答案:

答案 0 :(得分: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;
}

抱歉,我没有试过这个,但你应该明白这个想法。希望有效。

干杯