Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# datagridview的自定义排序_C#_Winforms_Datagridview - Fatal编程技术网

C# datagridview的自定义排序

C# datagridview的自定义排序,c#,winforms,datagridview,C#,Winforms,Datagridview,我使用下面的代码片段使用从下拉菜单中选择的排序选项对datagridview进行排序-截止日期或优先级 我的最后期限选择很有效。然而,我认为优先级选项目前只是将其按标签排序,但我希望在TaskTable(datagridview)中首先显示高优先级的行,然后显示中优先级,然后显示低优先级的行 有什么想法吗 private void sortButton_Click(object sender, EventArgs e) { string sortOption; // se

我使用下面的代码片段使用从下拉菜单中选择的排序选项对datagridview进行排序-截止日期或优先级

我的最后期限选择很有效。然而,我认为优先级选项目前只是将其按标签排序,但我希望在TaskTable(datagridview)中首先显示高优先级的行,然后显示中优先级,然后显示低优先级的行

有什么想法吗

private void sortButton_Click(object sender, EventArgs e)
    {
        string sortOption; // selected sorting method

            sortOption = sortComboBox.Text;

            switch (sortOption)
            {
                case "Deadline":
                    TaskTable.Sort(TaskTable.Columns["Deadline"],
                    System.ComponentModel.ListSortDirection.Ascending); // sort by deadline, nearest first.
                    break;
                case "Priority":
                    TaskTable.Sort(TaskTable.Columns["Priority"],
                    System.ComponentModel.ListSortDirection.Ascending); // sort by priority - high, medium, low

                    break;

您可以为每种类型(如1、2、3)添加一个额外的行,并使用该行(隐藏行)对其进行排序。机械地为每种类型分配数字,并使用该整数进行排序。

那么您定义的优先级值是“高”、“中”和“低”?如果是这种情况,您应该定义一个哈希表、一个新的结构或类似的东西,以向用户提供诸如“high”、“medium”等字段值,但要确保其排序正确(按字母顺序,即根据实际十六进制值)

高1 中等2 低3


额外的行也可以完成任务,但我认为这不是最好的选择。您应该封装实际值及其各自的键。万一需求发生变化,您将更容易匹配它们。

如果这真的是
WPF
不要对
数据网格进行排序,而是对绑定数据进行排序,这通常更容易实现

DataGridView是winforms而不是WPF