Sort Datagridview with multiple columns using BindingSource in VB.NET When you have to sort datagridview with multiple columns then follow the code below. This code is tested with Visual Studio 2005 and VB.net window application. Here I am making sorting with two columns, first column is dynamic (as user clicked) and second column is fixed (default). You can extend this as per your requirement. Basically this code will help you to understand how you can do sorting in datagridview with multiple columns. 'Declare one shared/Static variable to take care of persisting the state of sort direction Shared sortDirection As String = " ASC " **dtDataTable is the table which used to bind the DataGridView1 Private Sub DataGridView1_ColumnHeaderMouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellMouseEventArgs) Handles DataGridView1.ColumnHeaderMouseClick Dim dataGridBindingSource As New BindingSource dataGridBindingSource.DataSource = dtDataTable 'This is (ID ASC) first column I made it fixed Dim defaultColumn As String = "ID ASC" Dim sortColumnOrder As New StringBuilder Const ASC As String = " ASC " Const DESC As String = " DESC " 'This code will sort the grid with secondary column as Option If sortDirection = ASC Then sortDirection = DESC ElseIf sortDirection = DESC Then sortDirection = ASC End If 'Collect Column name and built Sort string sortColumnOrder.Append(DataGridView1.Columns(e.ColumnIndex).Name) sortColumnOrder.Append(sortDirection) sortColumnOrder.Append(GlobalConstants.COMMA) sortColumnOrder.Append(DefaultColumn) 'Sort the Binding Source dataGridBindingSource.Sort = sortColumnOrder.ToString() 'Finally Bind the DataGrid with sorted data table source Me.DataGridView1.DataSource = dataGridBindingSource End Sub
When user click on the datagridview header, any column to sort then records would be sorted based on the sortColumnOrder string created. For example if user clicks on the second column header to sort then sortColumnOrder string would be "Second Column ASC/DESC, First Column ASC/DESC" If user clicks on the fourth column to sort then sortColumnOrder string would be "Fourth Column ASC/DESC, First Column ASC/DESC" etc You can make this code to create sort string as per user requirement like "1st column ASC/DESC, 2nd column ASC/DESC, 3rd column ASC/DESC" etc. |
Friday, September 11, 2009
Sort Datagridview with multiple columns using BindingSource in VB.NET
Subscribe to:
Post Comments (Atom)
3 comments:
Works perfect!
Thank you
Nice!
only this page does not show properly on firefox...
or Chrome.
Post a Comment