как сбросить строки во вновь добавленный столбец с его значением по умолчанию - PullRequest
1 голос
/ 03 марта 2010

Я создал приложение, которое показывает данные в таблице данных. он также предоставляет пользовательский интерфейс для добавления нового столбца в таблицу данных со значением по умолчанию.
Но проблема в том, что он показывает вновь созданный столбец в таблице данных, но значение по умолчанию не приходит. Я должен снова заполнить таблицу данных, чтобы снизить производительность моего приложения.
Итак, как мне преодолеть эту проблему ...

EDIT:

obj_dataTable.Columns.Add(columnName);

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

obj_dataTable.Columns[index].DefaultValue = defaultValue;

1 Ответ

1 голос
/ 03 марта 2010

Значения по умолчанию назначаются, когда вы добавляете строку в таблицу, а столбцу еще не присвоено значение. Следовательно, существующие строки не будут обновляться при изменении схемы. Если вы хотите использовать универсальные средства обновления таблицы и применения значений по умолчанию к существующим строкам, тогда я бы создал метод для копирования строк из текущей таблицы данных в новую таблицу данных с дополнительным столбцом в ней. Например:

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;
}

Извините, я не пытался запустить это, но вы должны понять. Надеюсь, что это работает.

Приветствия

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...