Я работаю над большим приложением базы данных, используя WPF. До сих пор мне удалось создать DataContext, используя Link to Sql class, сохранить его в ObservableCollection и передать его в DataGrid как DataContext.wpf datagrid observablecollection
Основная таблица в SQL Я пытаюсь читать/писать выглядит следующим образом
Work_Table
WorkID[pk int] | frn_CustomerID[fk int] | frn_UserID[fk int] | DateCreated[datetime] | etc...
Customers_Table
CustomerID[pk int] | CustomerName[varchar] | etc...
Users_Table
UserID[pk int] | UserName[varchar] | etc...
Я хочу, чтобы представить эти столбцы в моем DataGrid с помощью DataTemplates и редактирования Инлайн
WorkID | CustomerName | UserName | DateCreated
Do Я должен использовать класс Proxy, который содержит все эти столбцы и идентификаторы? Должен ли я изменить свой наблюдаемый коллектив, или я должен обрабатывать все в коде, основанном на событиях? Мне нравится тот факт, что datagrid делает базовый CRUD, который на самом деле велик, так как я нахожусь в ограничении по времени на данный момент.
Я довольно новичок в WPF и, в частности, с элементом управления DataGrid. Я также прочитал о IValueConverters, но я не совсем уверен, что это путь и какая проблема с производительностью, с которой я мог столкнуться.
Если кто-то может мне точку в правильном направлении, до сих пор, все поиски, которые я нашел простые таблицы без использования внешних ключей и т.д.
UPDATE
Я нашел этот код до сих пор и имел некоторый прогресс, но теперь проблема сортируется.
<toolkit:DataGridTemplateColumn Header="Customer Name">
<toolkit:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox ItemsSource="{Binding Customers, Source={StaticResource MyDataContext}}" DisplayMemberPath="CustomerName" SelectedValuePath="Customer_ID" SelectedValue="{Binding Path=Customer_ID, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
</DataTemplate>
</toolkit:DataGridTemplateColumn.CellTemplate>
</toolkit:DataGridTemplateColumn>`
Это позаботилось о том, чтобы отображать «Имя клиента» вместо имени Customer_ID. Конечно, я хочу, чтобы базовые данные были целыми, но отображали описание User Readable. Теперь проблема заключается в сортировке. Мне просто интересно, есть ли способ сделать это очень чисто. Я предполагаю, что это общий сценарий, но я не смог найти решение. Возможно, я ищу неправильные условия поиска.
Чтобы упростить вещи, вот что я до сих пор:
1.) У меня есть таблица под названием Work_Table, который содержит Work_ID, customer_id, EMPLOYEE_ID и т.д ..
2.) У меня есть еще один справочную таблицу под названием Customers_Table который содержит customer_id, CUSTOMERNAME и т.д ..
3.) Я должен отобразить эти столбцы в DataGrid - Work_ID, CUSTOMERNAME и т.д ...
у меня есть ObservableCollection, что мой DataGrid привязан. Прежде чем я попытался использовать метод combobox, он отобразил Work_ID, Customer_ID, Employee_ID и т. Д. В основном всю таблицу и ее столбцы.
Вопрос в том, что является лучшим способом для меня сделать пункт 3.)? Должен ли я привязывать свой DataGrid к пользовательскому ObservableCollection, который содержит только столбцы, которые мне нужны? Является ли IValueConverter другим возможным решением, поэтому, когда DataGrid собирается отобразить Customer_ID, вместо него будет отображаться CustomerName?
У меня не было этой проблемы до того, как я нормализовал базу данных.
Привет мистер Уэйн, Спасибо за ответ, это действительно очень полезный блог. Думаю, теперь я понимаю, что я пытаюсь искать. Я отправлю свой вопрос. Еще раз спасибо! – jxd215