Třídění dat v DataTable   zodpovězená otázka

VB.NET

Prosím o pomoc, nevím kde mám chybu (dt je DataTable, ve které jsou již načtena data):

Dim i As Integer = 0
Dim dv As New DataView(dt)

dv.Table = dt
dv.Sort = "MJ"          'MJ je název jednoho ze sloupců dt

For i = 0 To dv.Table.Rows.Count - 1
  MsgBox(dv.Table.Rows(i).Item(0).ToString & vbTab & _
         dv.Table.Rows(i).Item(1).ToString & vbTab & _
         dv.Table.Rows(i).Item(2).ToString)
Next i

MsgBox (jsem si teda myslel) by měl házet hodnoty z DataTable seřazené podle MJ, ale ono ne ... Crying or Very sad

Poradíte prosím kde je chyba?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Tím, že nastavíte Sort na nějakou hodnotu po naplnění se DataView neseřadí.

Zkuste to takhle:

Dim radky() As DataRow
radky = dt.Select("", "MJ")

Pak budete mít pole, ve kterém jsou seřazené řádky podle sloupce MJ. Nezkoušel jsem to, takže si nejsem na 100% jistý. Napište, jak to dopadlo.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Hledal jsem hledal a našel jsem: .ToTable

upravený kód vypadá takhle:

Dim i As Integer = 0
dt.DefaultView.Sort = "MJ"
dt = dt.DefaultView.ToTable

For i = 0 To dt.Rows.Count - 1
  MsgBox(dt.Rows(i).Item(0).ToString & vbTab & _
         dt.Rows(i).Item(1).ToString & vbTab & _
         dt.Rows(i).Item(2).ToString)
Next i

nahlásit spamnahlásit spam 0 odpovědětodpovědět

To je taky možné řešení. Oproti tomu mému to nevytvoří pole, ale tabulku, výsledek je však stejný.

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback