【问题标题】:Sorting a DataGridView by DataGridViewComboxBoxColumn按 DataGridViewComboxBoxColumn 对 DataGridView 进行排序
【发布时间】:2009-11-30 20:39:18
【问题描述】:

我希望能够按 ComboBoxColumn 对 DataGridView 进行排序,以便可以根据 ComboBoxColumn 中的值显示组。当我单击 ComboBoxColumn 时,DataGridView 没有响应,不像其他列是 TextBoxColumns。意思是,当我单击列标题时它不会排序。

如何提供此功能,还是必须用我自己的自定义类覆盖列的功能?

【问题讨论】:

    标签: c# datagridview


    【解决方案1】:

    我只是很快地对此进行了原型设计,向表单添加了一个未绑定的 DataGridView,然后添加了四列、两个文本框列和两个组合框列。

    整个代码隐藏如下所示:

    public partial class Form1 : Form
    {
    
        public Form1()
        {
            InitializeComponent();
            DataGridViewComboBoxColumn col = (DataGridViewComboBoxColumn) dataGridView1.Columns[1];
            DataGridViewComboBoxColumn col2 = (DataGridViewComboBoxColumn)dataGridView1.Columns[2];
            List<string> items = new List<string>(){"B", "C", "E", "A"};
            col.DataSource = items;
            col.SortMode = DataGridViewColumnSortMode.Automatic;
            col2.DataSource = items;
            col2.SortMode = DataGridViewColumnSortMode.Automatic;
    
            dataGridView1.Rows.Add(new string[] {"A", "B", "C", "D"});
            dataGridView1.Rows.Add(new string[] { "B", "C", "C", "F" });
            dataGridView1.Rows.Add(new string[] { "C", "B", "A", "A" });
        }        
    }
    

    在这个非常简单的示例中,排序对我来说非常有效。

    您可能需要发布代码示例以缩小代码中的差异。

    我能想到的一种可能是我绑定到一个字符串列表,而不是对象。

    根据documentation,您还可以为 SortCompare 事件提供您自己的自定义处理程序。

    【讨论】:

    • 太棒了!列具有不同的默认排序模式总是让我感到非常愚蠢。很高兴你把它整理好了
    【解决方案2】:

    thisthis 网址有帮助吗??

    引用上述网址:

    datagridview 组合框列排序 在它绑定的列的值上 也。如果您使用的是数据网格视图 显示一个文本表示 id 当您对列进行排序时,它将是 在 id 上而不是在文本上。

    【讨论】:

    • 我使用的是未绑定的 DataGridView,所以不幸的是这无济于事
    【解决方案3】:

    我按 ComboBox 文本的值而不是 ID 对 DataGridViewComboBoxColumn 进行排序,对我的 ComboBox 中的记录进行排序。我修改了 ComboBox 的源以按 SQL 中显示的值 (ORDER BY [value_displayed] ASC/DESC) 对记录进行排序。这意味着记录的 ID 与值的顺序相同。

    例如:

    • 未排序的组合框:1:费尔南多,2:亚历克斯,3:查理

    • 排序的组合框:1:Alex,2:Charlie,3:Fernando

    这意味着,即使 DataGridView 列排序是基于 ID 排序,文本值的顺序也相同,因此列排序是正确的。

    【讨论】:

      猜你喜欢
      • 2012-05-10
      • 1970-01-01
      • 1970-01-01
      • 2012-02-12
      • 1970-01-01
      • 2016-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多