2009-11-10 5 views
0

Я работаю над большим приложением базы данных, используя 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?

У меня не было этой проблемы до того, как я нормализовал базу данных.

ответ

1

Я думаю, что это, вероятно, то, что вы ищете.

http://blogs.msdn.com/vinsibal/archive/2008/08/19/wpf-datagrid-stock-and-template-columns.aspx

+0

Привет мистер Уэйн, Спасибо за ответ, это действительно очень полезный блог. Думаю, теперь я понимаю, что я пытаюсь искать. Я отправлю свой вопрос. Еще раз спасибо! – jxd215

Смежные вопросы