代码之家  ›  专栏  ›  技术社区  ›  Rashmi Pandit

如何防止数据网格视图排序

  •  11
  • Rashmi Pandit  · 技术社区  · 16 年前

    我正在Windows窗体上使用DataGridView。它只显示两列。默认情况下,当应用程序运行时,如果单击列标题,DataGridView将根据该列进行排序。但是,我希望完全禁用网格视图上的排序。我找不到可以设置sorting=false的属性,或者类似的属性。

    有人能告诉我如何禁用网格视图排序吗?

    谢谢)

    编辑:

    我想我可以将单个列设置为不可排序(在下面发布了答案)。是否可以在网格视图级别而不是单个列上执行此操作?

    6 回复  |  直到 7 年前
        1
  •  21
  •   Rashmi Pandit    16 年前

    好的,找到答案了。对于每一列,我需要明确指定

    this.dgv.Columns[1].SortMode = DataGridViewColumnSortMode.NotSortable;
    

    所以我在一个助手类中编写了自己的函数

    /// <summary>
    /// Sets the sort mode for the data grid view by setting the sort mode of individual columns
    /// </summary>
    /// <param name="dgv">Data Grid View</param>
    /// <param name="sortMode">Sort node of type DataGridViewColumnSortMode</param>
    public static void SetGridViewSortState(DataGridView dgv, DataGridViewColumnSortMode sortMode)
    {
        foreach (DataGridViewColumn col in dgv.Columns)
            col.SortMode = sortMode;
    }
    

    无论在哪里,我都需要让网格视图变得不重要,我这样称呼它:

    Helper.SetGridViewSortState(this.dgv, DataGridViewColumnSortMode.NotSortable);
    
        2
  •  3
  •   ChrisF    16 年前
    For i = 0 To DataGridView1.Columns.Count - 1
        DataGridView1.Columns.Item(i).SortMode = DataGridViewColumnSortMode.Programmatic
    Next i
    

    web gridview有一个属性allowsorting,这要容易得多!

        3
  •  2
  •   Marc Gravell    16 年前

    排序在一定程度上是数据源的一个特性。在这种情况下,数据源是什么? DataTable 也许吧?一种选择是简单地使用不支持排序的数据源,这几乎是所有数据源。 List<T> , BindingList<T> 等等-不要提供排序。

    如果你必须使用 DataView ,您可以(我猜)用重新实现的自定义视图包装该视图。 IBindingList (回来) false 对于 SupportsSorting ,但是简单地更改每列的值是 许多 更容易(到了一定程度 疯子 做其他事情…)

        4
  •  0
  •   tyne    7 年前

    或者你可以创建你自己的函数

    Private Sub NotSortGrid()

        For i = 0 To dgvUtil.Columns.Count - 1
    
    
    
            dgvUtil.Columns.Item(i).SortMode = DataGridViewColumnSortMode.NotSortable
    
    
    
        Next i
    

    End Sub

        5
  •  -1
  •   GWLlosa    16 年前

    您总是可以自己处理列标题单击和双击事件,而不在其中执行任何操作。

        6
  •  -1
  •   Marcus Santodonato    12 年前

    从.NET 3.0开始,GridView有一个名为allowsorting的属性

    推荐文章