Tryb wirtualny w formancie DataRepeater (Visual Studio)
Kiedy mają być wyświetlane duże ilości danych tabelarycznych w DataRepeater kontroli, można zwiększyć wydajność przez ustawienie VirtualMode właściwość, aby True i wyraźnie zarządzanie Interakcja formantu ze źródłem danych.DataRepeater Kontroli udostępnia kilka zdarzeń, które może obsłużyć do interakcji z źródła danych i wyświetlić dane, w razie potrzeby w czasie wykonywania.
W jaki sposób wirtualne tryb programu Works
Najbardziej typowym scenariuszem dla DataRepeater kontroli jest powiązać formantów podrzędnych z ItemTemplate do danych źródła w czasie projektowania i pozwolić BindingSource do przekazywania danych i z powrotem w razie potrzeby.Gdy tryb wirtualny formanty nie są powiązane ze źródłem danych, a dane są przekazywane i z powrotem do źródła danych w czasie wykonywania.
Gdy VirtualMode właściwość jest ustawiona na True, utworzyć interfejs użytkownika przez dodanie formantów z Przybornik zamiast dodawać formanty związane z Źródeł danych okna.
Zdarzenia są wywoływane na podstawie przez formant, a następnie należy dodać kod obsługi wyświetlania danych.Gdy nowy DataRepeaterItem jest przewijane do widoku, ItemValueNeeded zdarzenie jest wywoływane jeden raz dla każdego formantu i należy podać wartości dla każdego formantu w ItemValueNeeded programu obsługi zdarzeń.
Po zmianie danych w jednym z formantów przez użytkownika, ItemValuePushed zdarzenie jest wywoływane i musi sprawdzić poprawność danych i zapisać go w źródle danych.
Jeśli użytkownik doda nowy element, NewItemNeeded zdarzenie jest wywoływane.Program obsługi tego zdarzenia umożliwia tworzenie nowego rekordu w źródle danych.Aby uniknąć niezamierzonych zmian, należy również monitorować KeyDown zdarzenia dla każdego formantu i wywołanie CancelEdit , jeśli użytkownik naciśnie klawisz ESC.
Jeśli zmiany źródła danych, można odświeżyć DataRepeater kontroli przez wywołanie BeginResetTemplateItem i EndResetTemplateItem metody.Obie metody musi być wywołany w kolejności.
Wreszcie, należy zaimplementować obsługę zdarzeń dla ItemsRemoved zdarzenie, które występuje, gdy element zostanie usunięty, a opcjonalnie dla UserDeletingItems i UserDeletedItems zdarzenia, które występują w każdym przypadku, gdy użytkownik usuwa element przez naciśnięcie klawisza DELETE.
Tryb wirtualny wykonawcze
Poniżej przedstawiono kroki, które są wymagane do wdrożenia w trybie wirtualnym.
Aby zaimplementować tryb wirtualny
Przeciągnij DataRepeater kontroli z PowerPacks programu Visual Basic kartę w Przybornik do formantu formularza lub kontenera.Ustaw VirtualMode właściwość, aby True.
Przeciągnij formanty z Przybornik na region (region górnej) szablonu elementu z DataRepeater kontroli.Konieczne będzie jeden formant dla każdego pola w źródle danych, który chcesz wyświetlić.
Wdrożenie programu obsługi dla ItemValueNeeded zdarzenie, aby podać wartości dla każdego formantu.To zdarzenie jest wywoływane, gdy nowy DataRepeaterItem jest przewijane do widoku.Kod będzie przypominał poniższy przykład, który jest źródłem danych o nazwie Employees.
Private Sub DataRepeater1_ItemValueNeeded( ByVal sender As Object, ByVal e As Microsoft.VisualBasic.PowerPacks.DataRepeaterItemValueEventArgs ) Handles DataRepeater1.ItemValueNeeded If e.ItemIndex < Employees.Count Then Select Case e.Control.Name Case "txtFirstName" e.Value = Employees.Item(e.ItemIndex + 1).firstName Case "txtLastName" e.Value = Employees.Item(e.ItemIndex + 1).lastName End Select End If End Sub
private void dataRepeater1_ItemValueNeeded(object sender, Microsoft.VisualBasic.PowerPacks.DataRepeaterItemValueEventArgs e) { if (e.ItemIndex < Employees.Count) { switch (e.Control.Name) { case "txtFirstName": e.Value = Employees[e.ItemIndex + 1].firstName; break; case "txtLastName": e.Value = Employees[e.ItemIndex + 1].lastName; break; } } }
Wdrożenie programu obsługi dla ItemValuePushed zdarzeń do przechowywania danych.To zdarzenie jest wywoływane, gdy użytkownik zatwierdza zmiany do kontroli dziecko DataRepeaterItem.Kod będzie przypominał poniższy przykład, który jest źródłem danych o nazwie Employees.
Private Sub DataRepeater1_ItemValuePushed( ByVal sender As Object, ByVal e As Microsoft.VisualBasic.PowerPacks.DataRepeaterItemValueEventArgs ) Handles DataRepeater1.ItemValuePushed Dim emp As Employee = Employees.Item(e.ItemIndex) Select Case e.Control.Name Case "txtFirstName" emp.firstName = e.Control.Text Case "txtLastName" emp.lastName = e.Control.Text Case Else MsgBox("Error during ItemValuePushed unexpected control: " & e.Control.Name) End Select End Sub
private void dataRepeater1_ItemValuePushed(object sender, Microsoft.VisualBasic.PowerPacks.DataRepeaterItemValueEventArgs e) { Employee emp = Employees[e.ItemIndex]; switch (e.Control.Name) { case "txtFirstName": emp.firstName = e.Control.Text; break; case "txtLastName": emp.lastName = e.Control.Text; break; default: MessageBox.Show("Error during ItemValuePushed unexpected control: " + e.Control.Name); break; } }
Wdrożenie programu obsługi dla każdego formantu podrzędne KeyDown zdarzenia i monitor klawisz ESC.Wywołanie CancelEdit metody zapobiegające ItemValuePushed zdarzenia z podniesionych.Kod będzie przypominał następujący przykład.
Private Sub Child_KeyDown( ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs ) Handles txtFirstName.KeyDown, txtLastName.KeyDown If e.KeyCode = Keys.Escape Then Datarepeater1.CancelEdit() End If End Sub
private void child_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e) { if (e.KeyCode == Keys.Escape) { this.dataRepeater1.CancelEdit(); } }
Wdrożenie programu obsługi dla NewItemNeeded zdarzenia.To zdarzenie jest wywoływane, gdy użytkownik dodaje nowy element, aby DataRepeater kontroli.Kod będzie przypominał poniższy przykład, który jest źródłem danych o nazwie Employees.
Private Sub DataRepeater1_NewItemNeeded( ) Handles DataRepeater1.NewItemNeeded Dim newEmployee As New Employee Employees.Add(newEmployee) blnNewItemNeedEventFired = True End Sub
private void dataRepeater1_NewItemNeeded(object sender, System.EventArgs e) { Employee newEmployee = new Employee(); Employees.Add(newEmployee); blnNewItemNeedEventFired = true; }
Wdrożenie programu obsługi dla ItemsRemoved zdarzenia.To zdarzenie występuje, gdy użytkownik usuwa istniejący element.Kod będzie przypominał poniższy przykład, który jest źródłem danych o nazwie Employees.
Private Sub DataRepeater1_ItemsRemoved( ByVal sender As Object, ByVal e As Microsoft.VisualBasic.PowerPacks.DataRepeaterAddRemoveItemsEventArgs ) Handles DataRepeater1.ItemsRemoved Employees.RemoveAt(e.ItemIndex) End Sub
private void dataRepeater1_ItemsRemoved(object sender, Microsoft.VisualBasic.PowerPacks.DataRepeaterAddRemoveItemsEventArgs e) { Employees.RemoveAt(e.ItemIndex); }
Dla kontroli poziomu sprawdzania poprawności, opcjonalnie zaimplementować obsługę dla Validating zdarzenia formantów podrzędnych.Kod będzie przypominał następujący przykład.
Private Sub Text_Validating( ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs ) Handles txtFirstName.Validating, txtLastName.Validating If txtFirstName.Text = "" Then MsgBox("Please enter a name.") e.Cancel = True End If End Sub
private void Text_Validating(object sender, System.ComponentModel.CancelEventArgs e) { if (txtFirstName.Text == "") { MessageBox.Show("Please enter a name."); e.Cancel = true; } }