首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在dataGridView中对辅助列进行排序?

如何在dataGridView中对辅助列进行排序?
EN

Stack Overflow用户
提问于 2012-01-21 22:02:17
回答 1查看 859关注 0票数 0

我有一个数据视图,我希望排序。其中一列标题为"Page“,长度为2-3位数字。我有另一个名为"Item“的列,它是一个介于1和3之间的数字。我尝试按这两个列对数据进行排序,首先是页面,然后是项目:

(示例)

代码语言:javascript
复制
Page 01, item 1
Page 01, item 2
Page 02, item 2
Page 02, item 3
EN

回答 1

Stack Overflow用户

发布于 2012-07-09 22:33:40

我知道这篇文章有点老了,但我来这里是为了寻找答案,但没有其他人回应,所以我想我应该在这里放一个。

您需要做的第一件事是禁用标题上的自动排序。在我将数据源绑定到dgv之后,我调用了一个disableSort方法,实际上我发现通过将排序模式设置为编程,这个方法工作得最好

代码语言:javascript
复制
    private void disableSort()
    {
        foreach(DataGridViewColumn dc in dataGridView2.Columns)
        {
            dc.SortMode = DataGridViewColumnSortMode.Programmatic;
        }
    }

然后,我绑定到dataGrid上的CellMouseDown事件

代码语言:javascript
复制
        private void dataGridView2_CellMouseDown(object sender, DataGridViewCellMouseEventArgs e)
    {
        if (e.RowIndex == -1)
        {
            int rIdx = dataGridView2.SelectedCells[0].RowIndex;
            seq = dataGridView2.Rows[rIdx].Cells["SequenceNo"].Value.ToString();

            int selectedColumnIdx = e.ColumnIndex;
            ListSortDirection direction;

            if (dataGridView2.SortedColumn == dataGridView2.Columns[selectedColumnIdx])
            {
                if (dataGridView2.SortOrder == SortOrder.Ascending)
                {
                    direction = ListSortDirection.Descending;
                }
                else
                {
                    direction = ListSortDirection.Ascending;
                }
            }
            else
            {
                direction = ListSortDirection.Ascending;
            }

            this.dataGridView2.Sort(this.dataGridView2.Columns["SequenceNo"], ListSortDirection.Ascending);
            this.dataGridView2.Sort(this.dataGridView2.Columns[selectedColumnIdx], direction);
        }

如果您通过ColumnHeaderMouseClick事件进入,则可以跳过我的RowIndex检查

我使用SequenceNumber作为辅助排序(在用户选择要排序的列之后,他们希望按sequenceNumber排序)。只要找出用户正在对哪一列进行排序,它当前的sortorder是什么,采取相反的方法,然后首先对次列进行排序,然后对主要列进行排序。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8953550

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档