簡體   English   中英

盡管CanUserSortColumns =“ true”,但使用ItemsSource填充的DataGrid無法排序

[英]DataGrid populated using ItemsSource not sortable despite CanUserSortColumns=“true”

我有一個從數據庫填充的數據網格,因此可以查看數據庫並進行更改。

但是,您無法通過單擊標題對列進行排序。 當您單擊它們時,沒有任何反應。 我已經在SO上看到了很多類似的問題,並且改變了XMAL並嘗試了不同的方法,但是似乎沒有任何答案可以解決這個問題。

這是我的C#。

    public Window1()
    {
        InitializeComponent();
        LoadDataGrid();
    }

    private void LoadDataGrid()
    {
        TasksDataContext tasksDB = new TasksDataContext();
        var tasks = (from p in tasksDB.LubeTasks select p);
        MyDataGrid.ItemsSource = tasks;
    }

這是我首先在教程中嘗試過的XMAL:

    <grid:DataGrid Name="MyDataGrid" CanUserSortColumns="True">
        <grid:DataGrid.Columns>

            <grid:DataGridTextColumn Binding="{Binding Path=Number}"
                                Header="Number" CanUserSort="True" />


            <grid:DataGridTextColumn Binding="{Binding Path=Description}"
                                Header="Description" CanUserSort="True"/>

        </grid:DataGrid.Columns>
    </grid:DataGrid>

我還嘗試添加諸如SortMemberPath="Number.code"SortMemberPath="Number"並使用不同的標記進行搜索,但是仍然無法排序。

我還在這里的另一篇教程中嘗試過這樣的結構,但是它也不起作用。

    <grid:DataGrid Name="MyDataGrid" CanUserSortColumns="True" ItemsSource="{Binding}">
        <grid:DataGrid.Columns>


                <grid:DataGridTemplateColumn  SortMemberPath="Number" CanUserSort="true">
                    <grid:DataGridTemplateColumn.CellTemplate >
                        <DataTemplate>
                            <TextBlock>
                                <TextBlock.Text>
                                    <Binding Path="Number"/>
                                </TextBlock.Text>
                            </TextBlock>
                        </DataTemplate>
                    </grid:DataGridTemplateColumn.CellTemplate>
                </grid:DataGridTemplateColumn>

                <grid:DataGridTemplateColumn  SortMemberPath="Description" CanUserSort="true">
                    <grid:DataGridTemplateColumn.CellTemplate >
                        <DataTemplate>
                            <TextBlock>
                                <TextBlock.Text>
                                    <Binding Path="Description" />
                                </TextBlock.Text>
                            </TextBlock>
                        </DataTemplate>
                    </grid:DataGridTemplateColumn.CellTemplate>
                </grid:DataGridTemplateColumn>

        </grid:DataGrid.Columns>
    </grid:DataGrid>

我如何填充數據網格存在問題嗎? 我試過使用MyDataGrid.DataContext = tasks; 但是,如果這樣做,我似乎根本無法填寫數據網格。

非常感謝您的任何建議。

您需要將Database的LINQ結果放入支持排序的結構中。

嘗試這個:

    TasksDataContext tasksDB = new TasksDataContext();
    var tasks = (from p in tasksDB.LubeTasks select p).ToList();
    MyDataGrid.ItemsSource = tasks;

暫無
暫無

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

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