Учитывая DataGridView, у которого установлен BindingSource следующим образом:
В winform мы добавляем объект BindingSource, используя конструктор, который называется myBindingScource.
Затем в Form.Designer.cs мы добавляем это в InitializeComponents ()
myBindingSource.DataSource = typeof(MyLinq.Person); //Mylinq is the autogenerated Linq Model/Diagram
Позже, в самой форме мы делаем:
myDataView.DataSource = myBindingSource;
и тогда у нас есть метод, который заполняет Grid ...
using ( myDataContext mdc = new MyDataContext() )
{
myDataView.DataSource = from per in mdc.person
select per;
}
В качестве примечания я настроил столбцы в Design Time, и все показывает нормально.
Поскольку LINQ 2 SQL не возвращает Anonymous, «myDataView» является редактируемым, и здесь возникает вопрос…
Вопрос: как мне сохранить эти изменения?
В сетке данных есть десятки событий, и я не уверен, какое из них более подходящее. Даже если я попробую одно из событий, я все еще не знаю, какой код мне нужно выполнить, чтобы отправить эти изменения обратно в БД, чтобы сохранить изменения.
Я помню, что в те дни ADO.NET DataSet вы делали dataadapter.Update (набор данных);
Также представьте, что функции retrieve и persist () находятся на бизнес-уровне, а сигнатура метода выглядит следующим образом:
public void LoadMyDataGrid(DataGridView grid);
этот метод берет сетку формы и заполняет ее с помощью запроса LINQ2SQL, показанного выше.
Теперь я хотел бы создать такой метод:
public void SaveMyDataGrid(DataGridView grid); // or similar
Идея состоит в том, что этот метод не относится к одному и тому же классу (форме), во многих примерах предполагается, что все вместе.