Link to home
Start Free TrialLog in
Avatar of Artform04
Artform04

asked on

DataView sorting - appears to sort but the order is incorrect

Hi Guys,

I am sorting a dataview which is gained from the table of a dataset I have created (not data straight from a database).  I have some code that at first seems to work, ie the data switches order, but the sort is incorrect.  For example if i had the data 1,4,66,2,3 the data could come back for example as 66,4,2,1,3!!

I am thoroughly confused by this.  The column names are all correct etc...  

Please help if you have any thoughts or have seen this before.

Thanks in advance, Phil
Sub sortGrid(ByVal colName As String)
 
        'get the dataset from the session item
        Dim dsCurrent As New DataSet
        dsCurrent = Session.Item("data")
 
	'create a dataview to manipulate the data
 	Dim dataView As New DataView(dsCurrent.Tables(0))
	
	'create the sort
        dataView.Sort = colName & " DESC"
 
        GridView1.DataSource = dataView
        GridView1.DataBind()
       
End Sub

Open in new window

Avatar of Göran Andersson
Göran Andersson
Flag of Sweden image

What is the data type of the field that you are sorting?

Have you checked that you are actually sorting on the field that you think you are? It looks like you are soring on something else.

By the way, you are creating a DataSet object that you just throw away.

Dim dsCurrent As New DataSet
dsCurrent = Session.Item("data")

should be:

Dim dsCurrent As DataSet
dsCurrent = Session.Item("data")
Avatar of Artform04
Artform04

ASKER

Ill show you how the dataset is created, the code is below.  The data stored in it is an amalgamation of a number of lengthy database queries that is then analysed.  How can i cast the type of the data?

Thanks, Phil
 'create the results table
        Dim results As New DataSet
        With results
            .Tables.Add()
            With .Tables(0)
                .Columns.Add("Device")
                .Columns.Add("Journeys")
                .Columns.Add("Avg")
                .Columns.Add("Min")
                .Columns.Add("Max")
                .Columns.Add("Pickups")
                .Columns.Add("Hits")
            End With
        End With
 
 
 
'BUNCH OF ANALYSIS CODE HERE... 
 
 
 
 'add a new row to the final results
            results.Tables(0).Rows.Add()
            With results.Tables(0).Rows(results.Tables(0).Rows.Count - 1)
                .Item(0) = deviceModel
                .Item(1) = CInt(count)
                .Item(2) = CInt(average)
                .Item(3) = CInt(min)
                .Item(4) = CInt(max)
 
                Dim ds2 As New DataSet
                ds2 = objDb.getPickupAndHitsForPhone(deviceModel, unitLinkId, dateFrom, dateTo)
 
                .Item(5) = CInt(ds2.Tables(0).Rows(0).Item(0))
                .Item(6) = CInt(ds2.Tables(0).Rows(0).Item(1))
            End With

Open in new window

ASKER CERTIFIED SOLUTION
Avatar of Göran Andersson
Göran Andersson
Flag of Sweden image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
thanks, that works.  But instead of "typeInt" i had to put  "type.getType("system.int32")"
The typeInt variable is declared on line 1 in the code snippet, so that you don't have to call GetType repeatedly.