How to sort a dataview programmatically

Hi,
Need to sort a datagridview on it dataview property.The program should find out its previous sort method and decide automatically whether to sort the column desc or asc .
Any way of doing this?


Cheers
RIASAsked:
Who is Participating?

Improve company productivity with a Business Account.Sign Up

x
 
John (Yiannis) ToutountzoglouConnect With a Mentor Instructor Multiengine PilotCommented:
after populating your datagridview and before sorting it place this code ..and so you have only true and false
 For i as integer  = 0 To Me.DataGridView1.Rows.Count - 1
            If IsDBNull(Me.DataGridView1.Rows(i).Cells("YourCheckboxColumn").Value) Or Me.DataGridView1.Rows(i).Cells("YourCheckboxColumn").Value Is Nothing Then
                DataGridView1.Rows(i).Cells("YourCheckboxColumn").Value = False
            End If
        Next

Open in new window

0
 
Jesus RodriguezIT ManagerCommented:
You can check this link and will explain everything
http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.sortedcolumn.aspx

. One thing that you must do is chechk the event ColumnHeaderMuouseClick if you want to sort on click over the headr of the column and apply this code right there with a few modifications
0
 
ZhaolaiCommented:
What do you mean by "Need to sort a datagridview on it dataview property"?
0
Free Tool: ZipGrep

ZipGrep is a utility that can list and search zip (.war, .ear, .jar, etc) archives for text patterns, without the need to extract the archive's contents.

One of a set of tools we're offering as a way to say thank you for being a part of the community.

 
RIASAuthor Commented:
What do you mean by "Need to sort a datagridview on it dataview property"?
 Sort on the datatable.defaultview
0
 
RIASAuthor Commented:
Hi k-designersDate,
The code I am already using right now but it sorts on datatable and not on default view of datatable.
0
 
John (Yiannis) ToutountzoglouInstructor Multiengine PilotCommented:
try this

Dim dt As DataTable
Dim myDataView As DataView

dt.Load(dataReader)
myDataView = dt.DefaultView
myDataView.Sort = "mycolumn DESC"

Open in new window

0
 
John (Yiannis) ToutountzoglouInstructor Multiengine PilotCommented:
simply you can do
myTable.DefaultView.Sort = "TableColumn1 ASC , TableColumn2 DESC"
One order attribute effects only one column..
Hope It Helps..
0
 
John (Yiannis) ToutountzoglouInstructor Multiengine PilotCommented:
Also you can Sort data Via Direct Sql Statement Before  you set it as a datasource in datagridview....
SELECT........WHERE .......ORDER BY
0
 
RIASAuthor Commented:
Hi jtoutou,
Thanks for the suggestions.But this sorting of the textboxcolumn based on the value of the cell.It is not a result of a sql query.
Any suggestions on how to find the sort direction of the dataview programmatically?
 
Cheers
 
0
 
John (Yiannis) ToutountzoglouInstructor Multiengine PilotCommented:
0
 
RIASAuthor Commented:
Cheers mate...look like a very useful solution.Will try and get back asap
0
 
RIASAuthor Commented:
Thanks jtoutou but as I had mentioned my textboxcolumn in grid is not databound.. it is not a query result.I have added it in the datatable by
 

Dim bs As New BindingSource
dtTemp = bs.DataSource
dtTemp.Columns.Add("Selection", GetType(Object))
dtTemp.Columns("Selection").SetOrdinal(0)
bs.DataSource = dtTemp
Cheers mate really appreciate your help
 
0
 
John (Yiannis) ToutountzoglouInstructor Multiengine PilotCommented:
so you have mixed bound and non databound columns ..so why do you need dataview sorting in a non databound column..?If you bind the DataGridView to a DataTable, the DataGridView calls the
sorting function provided by the default DataView of the DataTable to sort
the data shown in it.

0
 
RIASAuthor Commented:
The problem is it sorts between 3 values dbnull,true and false I ned to sort only between true and false value
0
 
John (Yiannis) ToutountzoglouInstructor Multiengine PilotCommented:
why don't you set a default value for the boolean column?Checkbox should always have a 0 or a 1(Yes/No) Null in this case cause the CheckBox to an Unknown State.

0
 
RIASAuthor Commented:
jtoutou,
I have rows something like 163000 .Imagine the load speed if I have to loop through all rows .
Cheers
0
 
John (Yiannis) ToutountzoglouInstructor Multiengine PilotCommented:
you don't have to load all rows at once...somehow you should create a filter....and so the loop has to do in the datagridview not in the datatable...
0
 
RIASAuthor Commented:
somehow you should create a filter?I didnt understand this bit .Going little mad and hope I am not driving you mad too.
Cheers mate
0
 
John (Yiannis) ToutountzoglouInstructor Multiengine PilotCommented:
ok...let is start again ....you are populating a datagridview with 163000 rows?
what i am saying that you do not have to populate all these rows...your data tabale contains these number of rows...you should populate the datagridview with rows deppending on user's request..
so because your checkboxcolumn is a custom column and not databound you dont have a problem about looping through the datagridview ....:)
0
 
RIASAuthor Commented:
Hi,
Oh understood now.But should populate the datagridview with rows deppending on user's request..is not possible here as it ia grid which loads all records in a table.i am working on a conversion project vb 6 to vb.net .So can't change the specs now the grid needs to be populated with all members in a table.
Cheers mate

0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.