[WPF DataGrid] Как сортировать реляционные данные в колонке
От: JuniorCSharper  
Дата: 30.03.11 14:24
Оценка:
Привет Всем профи WPF и просто программерам.

Не давно пользую WPF и столкнулся с такой задачей. Сам пробовал по разному... перерыл и RSDN и MSDN и google.
но ответа пока не нашел. Может кто посодействует
Есть база данных состоящая из двух связанных таблиц.
Их описание
Messages { *ID :int, Company: int, Message:string}
Companies { *ID:int, Name:string }
* — это поле образует первичный ключ, Есть join по полю Message.Company = Company.ID;

В WPF используется следующие CollectionViewSources
<Window x:Class="Window"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    >
    <Window.Resources>
            <CollectionViewSource x:Key="companiesViewSource"
                              Source="{Binding Path=Companies, Source={StaticResource mainDataSet}}" />
    </Window.Resources>
    <Grid DataContext="{StaticResource mainViewSource}">
        <DataGrid AutoGenerateColumns="False" EnableRowVirtualization="True" ItemsSource="{Binding}"
                  Name="mainViewDataGrid"
                  IsReadOnly="True">
            <DataGrid.Columns>
                <DataGridTextColumn x:Name="iDColumn" Binding="{Binding Path=ID}" Header="№ п/п"
                    Width="SizeToHeader" MinWidth="40" IsReadOnly="True"/>
                <DataGridComboBoxColumn x:Name="companyColumn" Header="Компания" Width="SizeToHeader"
                    ItemsSource="{Binding Source={StaticResource companiesViewSource}}"
                    SelectedValuePath="ID"
                    DisplayMemberPath="Name"
                    SelectedValueBinding="{Binding Path=Company}"
                    IsReadOnly="True" MinWidth="50"/>
                <DataGridTextColumn x:Name="messageColumn" Binding="{Binding Path=Message}"
                    Header="Сообщение" Width="SizeToHeader" IsReadOnly="True" MinWidth="50" />
            </DataGrid.Columns>
        </DataGrid>
    </Grid>
</Window>


В файле App.xaml имеем следующие объявления
    <Application.Resources>
        <my:MainDataSet x:Key="mainDataSet" />
    </Application.Resources>


Все работает замечательно, за исключением сортировки по полю companyColumn. Тут сортировка идет не по символьному полю Companies.Name базы данных, а по числовому полю Messages.Company , что и не удивительно.
Как прикрутит правильную сортировку?

Спасибо за внимание и понимание
wpf datagrid database binding
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.