WPF Двухсторонняя DataGrid с привязкой к данным - PullRequest
0 голосов
/ 28 июля 2010

Может кто-нибудь указать мне на очень простой пример (C # 4.0) WPF Datagrid, который связан с таблицей SQL. Я бы очень хотел, чтобы был возможен упрощенный пример. Я хочу иметь возможность добавлять, редактировать и удалять строки. Спасибо.

Ответы [ 2 ]

1 голос
/ 21 июля 2011

Похоже на старую ветку, но, надеюсь, это все равно будет полезно. Если вы можете поместить свои данные в ObservableCollection, то большая часть трудного материала будет сделана для вас. Оттуда вы можете просто сделать что-то вроде этого:

ObservableCollection<Items> ocItems = new ObservableCollection<Items>();
ocItems.Add(new Items());

dgGrid.ItemsSource = ocItems;

или, если вы хотите сделать это в XAML, вы можете сделать что-то вроде этого:

<DataGrid Name="dgGrid" ItemsSource="{Binding ocItems, Mode=TwoWay}" AutoGenerateColumns="True" />

и убедитесь, что в вашем коде есть объект ocItems.

Используя ObservableCollection, вы автоматически добавляете и удаляете обновления, поэтому вам не нужно указывать DataGrid для обновления. Используя двухстороннее связывание, вы получаете любое редактирование, которое было сделано для вас. Вы можете настроить внешний вид DataGrid с помощью элементов DataGridColumns, но я позволю вам разобраться с этим самостоятельно.

0 голосов
/ 01 августа 2010

Если вы ищете что-то настолько простое, что все команды добавления / редактирования / удаления сгенерированы / выполнены для вас, то я думаю, что вам не повезло, потому что, насколько я знаю, вы должны кодировать все, что ваш самостоятельно. Если, возможно, вы не используете ADO.NET и DataSets, поскольку в Visual Studio есть мастера, которые будут генерировать операторы update / insert / delete / select для наборов данных ...

Я сам использую LINQ to SQL для всего, что связано с SQL, включая отображение данных в DataGrid. Это довольно просто, хотя я обнаружил, что DataGrid (v1, включенный в .NET Framework 4) - полусгоревший кусок cr * p, пронизанный ошибками и причудами. Но в целом шаги, необходимые для редактирования некоторых данных таблицы SQL, будут следующими:

1) Создайте файл «LINQ to SQL Classes» с вашей схемой SQL;

2) Загрузить данные в сетку данных, например. - this.DataGrid1.ItemsSource = new BindingList ((из c в Customer выбирают c) .ToList ());

3) Для привязок в столбцах DataGrid установите для параметра NotifyOnSourceUpdated значение true, а затем обработайте событие DataUrid SourceUpdated. В обработчике событий вы можете вставить обновленный элемент (доступный через аргументы обработчика событий -> BindingOperations.GetBindingExpression (e.TargetObject, e.Property) .DataItem) в предопределенный HashSet (хэш-наборы содержат только уникальные значения, поэтому, если несколько ячеек обновляются в той же строке, в вашем хэш-сетте будут по-прежнему только уникальные элементы).

4) В обработчике событий нажатия кнопки «Сохранить» вы можете перебирать HashSet и отправлять измененные данные обратно в базу данных SQL, снова через LINQ. Если столбец первичного ключа имеет тип int, вы можете проверить наличие новых строк с помощью item.Id == 0 (элемент является перечисляемым объектом из хэш-набора), а затем вставить элемент в таблицу. В противном случае, если Id! = 0, выберите объект из базы данных с указанным Id и обновите его свойства значениями перечисляемого элемента.

...