簡體   English   中英

Datagrid排序(仍然)不適用於Entity Framework 4.0

[英]Datagrid Sorting (Still) Not Working with Entity Framework 4.0

我在VS2010中編寫的應用程序遇到了麻煩。 我需要在Datagrid上顯示數據綁定數據,並允許用戶對其內容進行排序。

這是我的情況:

  1. 我用1個名為“問題”的表構建了一個非常簡單的SQL數據庫。 該表有2列,“ id_Question”和“ QuestionText”。

  2. 我從該數據庫創建了一個實體模型。

  3. 在“數據源”下,我已將“問題”實體作為Datagrid拖放到了WPF窗口中。 運行時,Datagrid正常填充數據庫中的所有內容。 大。

  4. 我已經將DataGrid和DataGrid列的“ CanUserSortColumns”和“ CanUserSort”屬性設置為True。 單擊列標題時,什么也沒有發生,沒有任何排序。

這是XAML代碼段:

  <DataGrid AutoGenerateColumns="False" 
              EnableRowVirtualization="True" Height="200" 
              HorizontalAlignment="Left" ItemsSource="{Binding}" 
              Margin="871,126,0,0" Name="questionsDataGrid" RowDetailsVisibilityMode="VisibleWhenSelected" 
              VerticalAlignment="Top" Width="400"
              CanUserSortColumns="True">
        <DataGrid.Columns>
            <DataGridTemplateColumn x:Name="id_QuestionColumn1" Header="id Question" Width="SizeToHeader">
                <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <Label Content="{Binding Path=id_Question}" />
                    </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
            </DataGridTemplateColumn>
            <DataGridTextColumn x:Name="questionTextColumn1" 
                                Binding="{Binding Path=QuestionText}" Header="Question Text" Width="300"
                                CanUserSort="True"/>
        </DataGrid.Columns>
    </DataGrid>

我在Stack Overflow和其他網站上閱讀了許多其他相關文章/問題,以下內容為:

每個人都提供了有用的見解,但我無法使它解決我的問題。 我需要在文件后面的代碼中編寫什么才能使其正常工作?

謝謝

您的模板列未排序還是ANY列未排序?

如果它與模板列thenn有關...

 DataGridTemplateColumn.SortMemberPath="SomeSortableProperty"
 DataGridTemplateColumn.SortDirection="Ascending"

我遇到了同樣的問題,花了很多時間進行搜索。 最后,解決方案非常簡單:

<Window.Resources>

  <CollectionViewSource x:Key="milestonesViewSource" CollectionViewType="ListCollectionView"/>

</Window.Resources>



<Grid DataContext="{StaticResource milestonesViewSource}">

  <DataGrid AutoGenerateColumns="False" EnableRowVirtualization="True" ItemsSource="{Binding}" RowDetailsVisibilityMode="VisibleWhenSelected">

     <DataGrid.Columns>

       <DataGridTextColumn x:Name="milestoneIdColumn" Binding="{Binding Path=MilestoneId}" Header="Milestone Id"/>

     </DataGrid.Columns>

</DataGrid>

</Grid>

問題是CollectionViewSource,它默認情況下創建BindingListCollectionView,該實現實現不支持排序的IBindingList!

但是CollectionViewSource具有屬性CollectionViewType,該屬性允許將視圖類型更改為ListCollectionView,從而可以進行排序。 就這樣。

我今天才在代碼中修復它,所以我還不知道有什么副作用。 目前,一切似乎都正常。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM