Groups | Blog | Home
all groups > dotnet performance > july 2006 >

dotnet performance : refresh performance in datagrid - big problem


jetan NO[at]SPAM online.microsoft.com (
7/12/2006 12:00:00 AM
Hi,

I have added a reply to you in microsoft.public.dotnet.languages.vb
newsgroup, please check it there. Thanks.

Best regards,
Jeffrey Tan
Microsoft Online Community Support
==================================================
When responding to posts, please "Reply to Group" via your newsreader so
that others may learn and benefit from your issue.
==================================================
This posting is provided "AS IS" with no warranties, and confers no rights.
sp
7/12/2006 1:53:05 AM
Hello

I have a problem with the refresh performance in datagrid –

when datagrid is being shown it is so slow that I can see one by one
cells is drawn

-datagrid contains about 35x40 of cells - they are generated through the
odswierz_frekfencje() function (listed below)-

-other datagrid – showing data from datasets are ok

-I suppose I have made some mistakes, could you give me a hint? which?


Sorry for crosspost!


Public Sub odswierz_frekfencje()

If status = True Then



' Me.DataGridView1.BeginEdit(False)





Dim miesiac, rok, liczba_dni As Integer

miesiac = Me.DateTimePicker1.Value.Month

rok = Me.DateTimePicker1.Value.Year

If miesiac = 1 Or miesiac = 3 Or miesiac = 5 Or miesiac = 7
Or miesiac = 8 Or miesiac = 10 Or miesiac = 12 Then

liczba_dni = 31

End If

If miesiac = 4 Or miesiac = 6 Or miesiac = 9 Or miesiac =
11 Then

liczba_dni = 30

End If

If miesiac = 2 And rok / 4 <> Math.Floor(rok / 4) Then

liczba_dni = 28

End If

If miesiac = 2 And rok / 4 = Math.Floor(rok / 4) Then

liczba_dni = 29

End If





Dim id_klasy, id_ucznia, i, j, liczba_ocen As Integer

'Dim pozycje() = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}

Dim buttonColumn As New DataGridViewButtonColumn

With buttonColumn

.HeaderText = "Dodaj:"

.Name = "dodaj"

.Text = "Dodaj:"



' Use the Text property for the button text for all
cells rather

' than using each cell's value as the text for its own
button.

.UseColumnTextForButtonValue = True

End With









id_klasy = klasa.SelectedValue.row.id_klasy

With DataGridView1

.Rows.Clear()

.Columns.Clear()

.Columns.Add("nr_dziennik", "Numer w dzienniku")

.Columns("nr_dziennik").DefaultCellStyle.Font = New
Font("Courier", 12, FontStyle.Bold, GraphicsUnit.Pixel)

.Columns("nr_dziennik").Width = 50

.Columns("nr_dziennik").AutoSizeMode =
DataGridViewAutoSizeColumnMode.None

.Columns("nr_dziennik").SortMode =
DataGridViewColumnSortMode.NotSortable





.Columns.Add("uczen", "uczen")

.Columns("uczen").AutoSizeMode =
DataGridViewAutoSizeColumnMode.AllCells

.Columns("uczen").DefaultCellStyle.Font = New
Font("Verdana", 12, FontStyle.Underline, GraphicsUnit.Pixel)

.Columns("uczen").DefaultCellStyle.Alignment =
DataGridViewContentAlignment.MiddleLeft

.Columns("uczen").SortMode =
DataGridViewColumnSortMode.NotSortable



.Columns.Add("id_ucznia", "id ucznia")

.Columns("id_ucznia").Visible = False

.Columns("id_ucznia").SortMode =
DataGridViewColumnSortMode.NotSortable





.Columns.Add("id_klasy", "id klasy")

.Columns("id_klasy").Visible = False

.Columns("id_klasy").SortMode =
DataGridViewColumnSortMode.NotSortable





.Columns.Add(buttonColumn)

.Columns("dodaj").Visible = False

.Columns("dodaj").SortMode =
DataGridViewColumnSortMode.NotSortable





.Rows.Add()

.Rows(0).Cells(0).ReadOnly = True

.Rows(0).Cells(1).ReadOnly = True

.Rows(0).Cells(2).ReadOnly = True

.Rows(0).Cells(3).ReadOnly = True





For j = 1 To liczba_dni

.Columns.Add(Str(j), Str(j))

.Columns(Str(j)).Width = 28

.Columns(Str(j)).DefaultCellStyle.Alignment =
DataGridViewContentAlignment.MiddleCenter

.Columns(Str(j)).SortMode =
DataGridViewColumnSortMode.NotSortable

.Rows(0).Cells(j + 4).Style.BackColor =
My.Settings.Item("dtyg_B_" + Trim(Str(Weekday(Str(miesiac) + "/" +
Str(j) + "/" + Str(rok)))))

.Rows(0).Cells(j + 4).Style.ForeColor =
My.Settings.Item("dtyg_F_" + Trim(Str(Weekday(Str(miesiac) + "/" +
Str(j) + "/" + Str(rok)))))

.Rows(0).Cells(j + 4).Value =
My.Settings.Item("dtyg_" + Trim(Str(Weekday(Str(miesiac) + "/" + Str(j)
+ "/" + Str(rok)))))



Next



End With





vuczniowieBindingSource.Filter = "id_klasy='" +
Str(id_klasy) + "'"

vuczniowieBindingSource.Sort = "nr_dziennik"

liczba_ocen = 0

Try


Me.Pobierz_frekfencjeTableAdapter.Fill(Me.Blizej_szkolyDataSet.pobierz_frekfencje,
New System.Nullable(Of Integer)(CType(id_klasy, Integer)), New
System.Nullable(Of Integer)(CType(miesiac, Integer)), New
System.Nullable(Of Integer)(CType(rok, Integer)))

Catch ex As System.Exception

blad.pokaz(ex.Message)

End Try

For i = 0 To vuczniowieBindingSource.Count - 1

id_ucznia = vuczniowieBindingSource.Item(i).row.id_ucznia

With DataGridView1

.Rows.Add()

.Rows(i + 1).Cells(0).Value =
vuczniowieBindingSource.Item(i).row.nr_dziennik

.Rows(i + 1).Cells(1).Value =
vuczniowieBindingSource.Item(i).row.uczen

.Rows(i + 1).Cells(2).Value = id_ucznia

.Rows(i + 1).Cells(3).Value = id_klasy

End With



'MsgBox(Pobierz_ocenyBindingSource.Count)

Me.frekfencjaBindingSource1.Filter = "id_ucznia='" +
Str(id_ucznia) + "'"

For j = 0 To Me.frekfencjaBindingSource1.Count - 1

With frekfencjaBindingSource1.Item(j).row

If .spoznienie = True Then

DataGridView1.Rows(i + 1).Cells(.liczba_dni
+ 4).Value = "S"



If .status > 0 Then

DataGridView1.Rows(i +
1).Cells(.liczba_dni + 4).Style.BackColor =
My.Settings.frek_spoznienie_poszlo



Else

DataGridView1.Rows(i +
1).Cells(.liczba_dni + 4).Style.BackColor = My.Settings.frek_spoznienie



End If

Else

AddThis Social Bookmark Button