2012-01-05 4 views
-1

Привет всем У меня возникла проблема с dataview, которые получают данные из datatabel (Col1: ID, Col2: Time) , и я сортирую по времени в desc ... когда значения, например, {40.21,80.21 , 70.25,25.2} dataview, сортируя их по мере необходимости, но когда одно из значений превышает 100, например {40.21,80.21, 100.25, 25.2} dataview всегда сортирует наибольшее число - это buttom, я не знаю, почему .. Это пример кодаСортировка с DataView

Dim dt As New DataTable 
     dt.Columns.Add("ID") 
     dt.Columns.Add("Time") 

     dt.Rows.Add(New String() {"1", "90.24"}) 
     dt.Rows.Add(New String() {"2", "80.25"}) 
     dt.Rows.Add(New String() {"3", "70.22"}) 
     dt.Rows.Add(New String() {"4", "102.12"}) 

     Dim dv As New DataView(dt) 
     dv.Sort = "Time Desc" 

заранее спасибо ...

+0

Я не уверен, но попробуйте 'Desc' by 'DESC' – Pratik

+0

Также задайте типы, dt.Columns.Add ("Time", Type.GetType ("System.Double")) – Pratik

+2

Вы сортируете строку, так что вы ожидали? «10000» ниже «2», потому что «1» в алфавитном порядке ниже, чем «2». –

ответ

-1
dt.Rows.Add(New String() {"1", "90.24"}) 

изменить его

dt.Rows.Add(New Integer() {"1", "90.24"}) 
+0

Это не скомпилирует (опция строгое) и не будет решением, потому что ОП, конечно, не хочет измените данные, чтобы получить правильную сортировку. –

4

Вы разбираете строку, так что вы ожидали? «10000» ниже «2», потому что «1» в алфавитном порядке ниже «2», так же как «abbbb» будет ниже, чем «b».

Вы должны использовать правильный тип данных (в данном случае я предполагаю Double), чтобы получить правильный (числовой) Сортировка:

Dim dt As New DataTable 
dt.Columns.Add("ID", GetType(Int32)) 
dt.Columns.Add("Time", GetType(Double)) 

dt.Rows.Add(1, 90.24) 
dt.Rows.Add(2, 80.25) 
dt.Rows.Add(3, 70.22) 
dt.Rows.Add(4, 102.12) 

Dim dv As New DataView(dt) 
dv.Sort = "Time Desc" 

Результат:

4 102,12 
    1 90,24 
    2 80,25 
    3 70,22 
Смежные вопросы