Řazení záznamů v dataGridViewu   otázka

VB.NET

Dobrý den, prosím o radu. Mám datagridView do kterého načítám data z SQL serveru 2000.

A teď můj problém: pokud načtu data přes SQLclient nejdou mi data v datagridView řadit.

příklad:




    Sub nacistData()

    dim connectionString As String = "SERVER=mujserver;DATABASE=pokus;UID=userA;PWD=pswd"
    dim spojeni As New SqlClient.SqlConnection(connectionString)
    dim dotaz As String
    dim com As SqlClient.SqlCommand
    dim bindingSource1 As BindingSource = New BindingSource
Dim zasobnikNacistUhrady As BindingSource = New BindingSource


        On Error GoTo handlerChybaSpojeni
        spojeni.Open()
        On Error GoTo 0



        dotaz = ("zde_volam_proceduru_serveru")
        com = New SqlClient.SqlCommand(dotaz, spojeni)

        On Error GoTo HandlerChybaProcedury
        com.ExecuteScalar()
        On Error GoTo 0




        zasobnikNacistUhrady.DataSource = com.ExecuteReader
        frmaplikace.DataGridViewUhrady.DataSource = zasobnikNacistUhrady




        spojeni.Close()



        Exit Sub


HandlerChybaProcedury: chybaProcedury(dotaz)
        Exit Sub

handlerChybaSpojeni: chybaSpojeni()
        Exit Sub

    End Sub

Řazení mám samozřejmě povolené. Pokud do stejného datagridviewu načtu ta samá data pře OLE DB řazení mi funguje (data nacpu do dataTable), ale příjde mi "neelegantni" používat OLE DB když mám data na SQL serveru a taky už nemám kontrolu nad připojením/odpojením (můžu sice dát spojeni.open a spojeni.close, ale pokud ho neotevřu data se mi stejně načtou, což se mi moc nelíbí).

Zde je ještě kod jak načítám data přes OLE DB

    dim connectionString2 As String = "Provider=SQLOLEDB;SERVER=mujserver;DATABASE=pokus;UID=userA;PWD=pswd"


    dim dbAdapter As OleDb.OleDbDataAdapter
    dim spojeni As New OleDb.OleDbConnection(connectionString2)
    dim dotaz As String


        dbUhrady.Clear()


        On Error GoTo handlerChybaSpojeni
        spojeni.Open()
        On Error GoTo 0



     ("zde_volam_proceduru_serveru")




        dbAdapter = New OleDb.OleDbDataAdapter(dotaz, connectionString2)

        On Error GoTo HandlerChybaProcedury
        dbAdapter.Fill(dbUhrady)
        On Error GoTo 0

        frmaplikace.DataGridViewUhrady.DataSource = dbUhrady




        spojeni.Close()




        Exit Sub


HandlerChybaProcedury: chybaProcedury(dotaz)
        Exit Sub

handlerChybaSpojeni: chybaSpojeni()
        Exit Sub

S SQLclientem to bylo OK až na to řazení, což samozřejmě není ideální.

Díky za jakoukoliv radu:)

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

A co použít nové technologie - LINQ. Btw, to s tím "On error goto" myslíte fakt vážně?

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

Ano myslím, každý něják začíná.

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

Proč používáte ve verzi se SqlClientem DataReader, který je určen pouze pro dopředné readonly procházení záznamů?

Použijte SqlDataAdapter, Dataset a DataTable. Na DataTable v DataSetu napojte objekt BindingSource a na něj DataGridView. Data pak půjdou nejen řadit, ale i filtrovat. Např. pomocí metody Sort a Filter objektu BindingSource.

No a pro obsluhu výjimek bych doporučil misto On Error - Goto raději konstrukci Try - Catch...

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

To načítání pomocí sqlClienta jsem dělal podle nějákého návodu. Možná byl dokonce na tomto webu ale to si nejsem jistý.

Obsluhu vyjímek se teprve učím zpracovávat. Každopádně děkuji za Vaši radu:)

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