/// <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;
}
Private Sub SetCodeBtn_Click(sender As Object, e As EventArgs) Handles SetCodeBtn.Click
If current_db_name = "employees" Then
Dim db_id_col As Integer = FindDataGridColumn("DB_ID", DataGridView1.Columns)
Dim job_code_col As Integer = FindDataGridColumn("JOBCODE", DataGridView1.Columns)
Dim new_job_code As String = JobCodesCBX.Text
Dim db_id_list As IList(Of String) = New List(Of String)
For Each row As DataGridViewRow In DataGridView1.SelectedRows
db_id_list.Add(row.Cells.Item(db_id_col).Value)
Next
For Each id As String In db_id_list
For Each table_row As DataRow In tables_data("employees").Rows
If table_row(tables_data("employees").Columns.IndexOf("DB_ID")) = id Then
table_row(tables_data("employees").Columns.IndexOf("JOBCODE")) = new_job_code
End If
Next
Next
table_changes_made = True
RefreshDataGridView(DataGridView1)
BindingSource1.ResumeBinding()
Else
MsgBox("You Must Select Rows In The Employees Database To Set A Job Code.")
End If
End Sub
Private Sub NotSortGrid()
For i = 0 To dgvUtil.Columns.Count - 1
dgvUtil.Columns.Item(i).SortMode = DataGridViewColumnSortMode.NotSortable
Next i
End Sub
7条答案
按热度按时间qco9c6ql1#
好吧,找到答案了。对于每一列,我需要显式地指定
所以我在一个Helper类中编写了自己的函数
无论在哪里,我需要使网格视图不可排序,我这样称呼它:
0md85ypi2#
web gridview有一个属性AllowSorting,这是更容易的!
yhived7q3#
排序在某种程度上是数据源的一个特性。这种情况下的数据源是什么?
DataTable
,也许?一种选择是简单地使用不支持排序的数据源,这几乎是所有的方法。List<T>
、BindingList<T>
等-不提供排序。如果你必须使用
DataView
,你可以(我猜)用一个自定义视图 Package 视图,重新实现IBindingList
(返回SupportsSorting
的false
),但简单地改变每列的值是很多容易的(到了做其他事情的时候会 * 疯狂 * 的程度)。..)pvcm50d14#
我为我的datagridview使用绑定源和datatable。为了绕过dataview所做的所有底层自动排序,我为每一行都有一个数据库id号,这样我就可以使用datagridview来列出我的id号(从所选的行开始),然后我可以搜索我的datatable中的每一条记录,并在那里进行更改。我可以直接在datagridview上做同样的事情。要清楚的是,我实际上不确定我是否绕过了自动排序,但这里的方法不会因为它们在自动排序中移动而错过任何行。如果您的数据库非常大,这可能不好,因为它涉及到搜索整个数据库中的每个记录。
我有一个员工数据库,我可以选择多行,然后从一个组合框中选择一个职务代码,然后单击按钮为每一行设置职务代码。我可能不需要挂起绑定源代码,但无论如何。..
这是我的代码。
Screenshot of my Program
w1e3prcc5#
也可以创建自己的函数
1bqhqjot6#
您总是可以自己处理列标题单击和双击事件,而不对它们执行任何操作。
7rfyedvj7#
盯着。NET3.0中,GridView有一个名为AllowSorting的属性