Как просматривать, редактировать и обновлять таблицу базы данных с помощью WPF DataGrid? - PullRequest
2 голосов
/ 24 мая 2011

Я новичок в WPF и, более того, в WPF Datagrid. Я так привык работать с двоюродным братом - DatagridView из Windows Forms, но я впервые работаю с WPF Datagrid Control, и мне очень тяжело!

Я создал набор данных с помощью встроенного мастера источников данных в Vidual Studio 2010. После создания этого набора данных я использовал другую встроенную функцию, которая позволяет автоматически генерировать сетку данных, предварительно привязанную к этой таблице. в наборе данных, так что я могу просто уронить его на окно.

Теперь, все это сделано хорошо, пока я не приду к той части, где мне нужно, чтобы пользователь отредактировал содержимое таблицы данных, и с помощью обратного вызова разместил новые / обновленные данные в базовой таблице в базе данных. .

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

Один источник говорит:

DataGrid проверяет CanAddNew в IEditableCollectionView, CanCancelEdit и CanRemove свойства до выполнения EditItem, CancelEdit или CommitEdit методы. Так что если редактирование не работать по какой-то причине, не забудьте проверить что он может редактировать.

из источника MSDN , но функция автоматической генерации в Visual Studio 11 дает мне это для источника привязки данных

<Window.Resources>
    <my:crimexDataSet x:Key="crimexDataSet"  />
    <CollectionViewSource x:Key="datapoolViewSource" Source="{Binding Path=datapool, Source={StaticResource crimexDataSet}}" />
</Window.Resources>

Итак, как мне перейти с этого источника данных типа IEditableCollectionView, чтобы можно было включить редактирование? Заранее спасибо ...

1 Ответ

1 голос
/ 27 мая 2011

Если бы это не приложение с коротким сроком службы, я бы сэкономил много сил и узнал бы о шаблоне MVVM (Model-View-ViewModel). Это очень распространенный шаблон в мирах WPF и Silverlight.

По сути, вы должны создать класс, специально предназначенный для источника данных для сетки, и, возможно, другие данные, которые вам понадобятся в вашем окне.

Для этой конкретной цели вы, вероятно, использовали бы ObservableCollection в качестве типа свойства, связанного с сеткой.

Здесь, в StackOverflow, есть много информации о MVVM, которую можно найти в Google и в книгах. Если вы поймете шаблон, это действительно может сделать процесс разработки пользовательского интерфейса намного менее болезненным.

...