none
Datagrid Caricamento lento dati da database RRS feed

  • Domanda

  • Buongiorno, sono nuovo di WPF, e sto cercando di imparare, ho realizzato diversi progetti desktop in VB.NET ed ora ho deciso per una particolarità attività che richiede una grafica più accattivante di utilizzare questa nuova tecnologia, ma ho un problema. Uso un database ACCESS (si lavora in locale e monoutente, i dati sono miseri ed il cliente dispone del pacchetto office installato). Ho un semplice Form con un pulsante ed un DataGrid. Per caricare 1500 righe con una sola colonna impiega ben 8 secondi, se alla Select dovessi aggiungere altre colonne il tempo aumenterebbe a dismisura, cosa che con un WinForm in mezzo secondo visualizza tutto. Dove sbaglio? mi manca qualche concetto base?

    Private Sub Button1_Click(sender As Object, e As RoutedEventArgs) Handles Button1.Click
            Dim objDataAdapter As New OleDbDataAdapter
            Dim tabella As New DataTable
            objDataAdapter.SelectCommand = New OleDbCommand()
            objDataAdapter.SelectCommand.Connection = Principale.GetVariabileC 'connessione al database
            objDataAdapter.SelectCommand.CommandText = "SELECT INFO FROM ACQUISTO23 WHERE AN = 21 and ST = 1"
            objDataAdapter.SelectCommand.CommandType = CommandType.Text
            objDataAdapter.Fill(tabella)
            Datagrid1.ItemsSource = tabella.DefaultView
            objDataAdapter.Dispose()
            tabella.Dispose()     
    End Sub
     <DataGrid x:Name="Datagrid1" 
                      HorizontalAlignment="Left" Height="411" Margin="262,22,0,0" 
                      VerticalAlignment="Top" Width="209" 
                      HeadersVisibility="Column" 
                      HorizontalGridLinesBrush="#FF172964" 
                      VerticalGridLinesBrush="#FFB6531A" 
                      EnableRowVirtualization="False" 
                      CanUserSortColumns="False" 
                      AreRowDetailsFrozen="False" 
                      AutoGenerateColumns="True" 
                      RowBackground="#FF3F8EDE"/>
      </Grid>

    venerdì 29 ottobre 2021 09:47

Risposte

  • Ho capito dove stava il problema.

    Nelle proprietà del DataGrid, sezione Varie, bisogna impostare a True la voce: EnableRowVirtualization

    Una volta fatto, i tempi di caricamento sono similari al DataGridView classico per WinForm.

    • Contrassegnato come risposta Waterfall1977 venerdì 29 ottobre 2021 16:48
    venerdì 29 ottobre 2021 16:48