Zdravím, Pracuji ve VB2005 s DB MSSQL Server 2005 EE. V programu mám netypový dataset, v něm tabulku, tabulka je přes objekt BindingSource připojena k objektu DataGridView.
...
bsZasobnik = New BindingSource(ds, mTabulkaZasobnik)
dgwZasobnik.DataSource = bsZasobnik
...
Vše funguje jak má, akorát když v níže uvedeném kódu při refreshi dat z podkladové DB odstraním řádek, ve kterém tabulku v datasetu nejdřív vymažu metodou Clear, tak se čas načtení zvýší při cca 150 řádcích z cca 2 desetin sekundy na 1,5 sekundy.
Private Sub RefreshdgwZasobnik()
'Znovunačtení mřížky se Zasobnikem vstupů
Cursor.Current = Cursors.WaitCursor
Dim HorPos As Integer = dgwZasobnik.FirstDisplayedScrollingRowIndex
ds.Tables(mTabulkaZasobnik).Clear() '!!!Toto je rozhodujici
'bsZasobnik.SuspendBinding()
'dgwZasobnik.ResumeLayout()
'ds.Tables(mTabulkaZasobnik).BeginLoadData()
Try
daZasobnik.Fill(ds, mTabulkaZasobnik)
Catch exc As SqlException
MessageBox.Show(exc.ErrorCode & vbCrLf & exc.Message)
Catch exc As Exception
MessageBox.Show(exc.Message)
End Try
'ds.Tables(mTabulkaZasobnik).EndLoadData()
'dgwZasobnik.ResumeLayout()
'bsZasobnik.ResumeBinding()
If HorPos > 0 And HorPos < dgwZasobnik.RowCount - 1 Then dgwZasobnik.FirstDisplayedScrollingRowIndex = HorPos
Cursor.Current = Cursors.Default
End Sub
Pokud mřížku zkusmo nepřipojím k objektu bsZasobnik, je načtení v obou variantách (s Clear i bez něj) stejně bleskurychlé. Zkoušel jsem přidávat spíše intuitivně další metody (viz zakomentované řádky před a za vlastním Fillem), ale bezúspěšně... Podkladová tabulka má jednosloupcový primární klíč typu uniqueidentifier, datovy adapter ma nastaveno daZasobnik.MissingSchemaAction = MissingSchemaAction.AddWithKey
|