Zum Inhalt springen

datagrid sehr langsam


xk4fu

Empfohlene Beiträge

ich nutze ein dgrid mit einem recorset

recordset ist veraltet, ich weis;

die frage ist nun: liegt es am recordset oder am dgrid, dass alles so langsam ist;

der select selbst benötigt keine 2 sekunden;

welche alternativen gibt es zum recordset?

Hi,

wieviele Datensätze zeigst du denn an? Wäre für den Kunden ein datagrid mit Paging eine Option? Im Datagrid wird SEHR viel Müll in den Viewstate geschrieben, da kann man händisch noch recht viel optimieren. Der HTML-code für eine Spalte könnte auch helfen, um Performanceprobleme aufzudecken. Hast du noch zusätzliche SQL Abfragen oder viel code im DataItemBound?

s.

Link zu diesem Kommentar
Auf anderen Seiten teilen

so sieht mein datenladen aus;

im beispiel benötigt ein select für ca. 400 datensätze in der db ~ 400 ms, in vb ~ 13 sekunden

    Private dt As DataTable = New DataTable("Kriterien")

    Friend WithEvents mDataSet As DataSet

    Private dgTS As DataGridTableStyle = New DataGridTableStyle


    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load


        Dim dcFallID As DataColumn = New DataColumn("FallID")

        Dim dcBezeichnung As DataColumn = New DataColumn("Bezeichnung")

        Dim dcFallArt As DataColumn = New DataColumn("Art")

        Dim dcFallKategorie As DataColumn = New DataColumn("Kategorie")

        Dim dcProjekt As DataColumn = New DataColumn("Projekt")

        Dim dcStatus As DataColumn = New DataColumn("Status")

        Dim dcPrio As DataColumn = New DataColumn("Prio")

        Dim dcAnlagedatum As DataColumn = New DataColumn("Anlagedatum")

        Dim dcWunschtermin As DataColumn = New DataColumn("Wunschtermin")

        Dim dcIstStart As DataColumn = New DataColumn("IstStart")

        Dim dcIstEnde As DataColumn = New DataColumn("IstEnde")

        Dim dcAnleger As DataColumn = New DataColumn("Anleger")

        Dim dcDelegiertAn As DataColumn = New DataColumn("Delegiert An")


        dcAnlagedatum.DataType = System.Type.GetType("System.DateTime")

        dcWunschtermin.DataType = System.Type.GetType("System.DateTime")

        dcIstStart.DataType = System.Type.GetType("System.DateTime")

        dcIstEnde.DataType = System.Type.GetType("System.DateTime")


        mDataSet = New DataSet("newDataSet")

        dt.Columns.AddRange(New DataColumn() {dcFallID, _

                                              dcBezeichnung, _

                                              dcFallArt, _

                                              dcFallKategorie, _

                                              dcProjekt, _

                                              dcStatus, _

                                              dcPrio, _

                                              dcAnlagedatum, _

                                              dcWunschtermin, _

                                              dcIstStart, _

                                              dcIstEnde, _

                                              dcAnleger, _

                                              dcDelegiertAn})


        mDataSet.Tables.Add(dt)


        Dim sSql As String

        Dim oRs As New ADODB.Recordset

        Dim newRow As DataRow

        Dim iZeile As Integer


        sSql = " select * from vloadadmin "


        oRs.Open(sSql, oConn)

        If Not oRs.EOF Then

            dgTS.MappingName = "Kriterien"

            DataGrid1.TableStyles.Add(dgTS)

            DataGrid1.TableStyles("Kriterien").AlternatingBackColor = Color.LightGoldenrodYellow

            While Not oRs.EOF

                newRow = dt.NewRow

                dt.Rows.Add(newRow)

                dt.Rows(iZeile)("FallID") = oStdFct.vCheckNull(oRs(0).Value)

                dt.Rows(iZeile)("Bezeichnung") = oStdFct.vCheckNull(oRs(1).Value)

                dt.Rows(iZeile)("Art") = oStdFct.vTranslateFallArt(oRs(2).Value)

                dt.Rows(iZeile)("Kategorie") = oStdFct.vTranslateFallKategorie(oRs(3).Value)

                dt.Rows(iZeile)("Projekt") = oStdFct.vTranslateProjekt(oRs(4).Value)

                dt.Rows(iZeile)("Status") = oStdFct.vTranslateStatus(oRs(5).Value)

                dt.Rows(iZeile)("Prio") = oRs(13).Value & " - " & oStdFct.vTranslatePrio(oRs(13).Value)

                dt.Rows(iZeile)("IstStart") = oStdFct.vCheckDate(oStdFct.vCheckNull(oRs(6).Value))

                dt.Rows(iZeile)("IstEnde") = oStdFct.vCheckDate(oStdFct.vCheckNull(oRs(7).Value))

                dt.Rows(iZeile)("Anlagedatum") = oStdFct.vCheckDate(oStdFct.vCheckNull(oRs(14).Value))

                dt.Rows(iZeile)("Wunschtermin") = oStdFct.vCheckDate(oStdFct.vCheckNull(oRs(11).Value))

                dt.Rows(iZeile)("Anleger") = oStdFct.vTranslateUser(oStdFct.vCheckNullUser(oRs(15).Value))

                dt.Rows(iZeile)("Delegiert An") = oStdFct.vTranslateUser(oStdFct.vCheckNullUser(oRs(16).Value))

                oRs.MoveNext()


                iZeile = iZeile + 1


            End While

        End If

        oRs.Close()


        DataGrid1.DataSource = dt


        Exit Sub


    End Sub

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hast Du Bei Dir Access auf dem Rechner? Wenn ja, leg mal eine neue Access Datenbank mit einer einzigen, leeren Tabelle an und versuch Dich mal mit dieser zu verbinden um raus zu bekommen obs an der DB liegt.

Im Normalfall ist OleDB zwar langsamer als ODBC, aber verushc trotzdem mal ob Du mit OleDb schneller auf die posgre DB kommst.

Link zu diesem Kommentar
Auf anderen Seiten teilen

ne, an der db liegts sicher nicht und an der version auch nicht!

wie gesagt, habe ich einen 7 sekunden delay, wenn ich das rs öffne, und weitere 6 sekunden, wenn ich das dt fülle;

warum sollte es also an der db liegen, wenn ich z.b. die daten beim befüllen ja schon habe (aber es 6 sekunden dauert)

muss wohl wo anders weitersuchen

Link zu diesem Kommentar
Auf anderen Seiten teilen

ne;

es lag am odbc treiber;

es gab noch einen, der 2 monate danach rausgekommen ist, mit dem öffnet sich das rs sofort;

da ich das datenladen etwas anders gemacht habe, dauert das halt noch ein wenig, dass alles aber auf odbcdataadapter umzustellen wär zu aufwendig;

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...