#c# #winforms
#c# #winforms
Вопрос:
У меня есть DataTable
initalTable, который содержит некоторые начальные цены. Я использую эту таблицу данных как DataSource
для a GridView
. У пользователя будет возможность изменить некоторые значения в GridView
, но значения из моей начальной таблицы также изменяются. Как я могу обойти эту привязку? Мне нужно сделать перекрестную ссылку между значениями, измененными пользователем в GridView
, с теми, которые я изначально сохранил в моем DataTable
.
Комментарии:
1. Почему бы не взять две таблицы данных? Скопируйте одно в другое. Один для исходных данных, а другой для измененных данных. Затем поместите соединение и выберите нужные столбцы.
Ответ №1:
Вы можете использовать метод GetChanges или просто клонировать DataTable.
private IEnumerable<String> GetChangedWithCrossReference()
{
return from originalRow in this.storeDataSet.PricesDataTable
join changedRow in this.storeDataSet.PricesDataTable.GetChanges(DataRowState.Changed)
on changedRow["Id"] equals originalRow["Id"]
select String.Format("Was {0}, became {1}",
originalRow ["Value"],
changedRow["Value"]);
}
или даже лучше и быстрее MSDN:
private IEnumerable<String> GetChangedWithCrossReference()
{
return from row in this.storeDataSet.PricesDataTable
select String.Format("Was {0}, became {1}",
row ["Value"],
row ["Value", DataRowState.Original])
where row.State == DataRowState.Changed;
}