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
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
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
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
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
thanks, that works. But instead of "typeInt" i had to put "type.getType("system.int3 2")"
The typeInt variable is declared on line 1 in the code snippet, so that you don't have to call GetType repeatedly.
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")