Modo virtual no controle DataRepeater (Visual Studio)
Quando você deseja exibir grandes quantidades de dados tabulares em um DataRepeater controle, você pode melhorar o desempenho, definindo o VirtualMode propriedade para True e gerenciamento interação do controle de com sua fonte de dados explicitamente. The DataRepeater controle fornece vários eventos que você pode manipular para interagir com sua fonte de dados e exibir sistema autônomo dados conforme necessário em time de execução.
Como virtual funciona de modo
O cenário mais comum para o DataRepeater o controle é BIND sistema autônomo controles filho da ItemTemplate em um de dados em time de design de fonte e permitir que o BindingSource para passar dados e para trás conforme necessário. Quando você usa o modo virtual, os controles não são limite para um dado de origem e dados é passado e para trás a fonte de dados subjacente em time de execução.
Quando o VirtualMode propriedade estiver definida como True, você criar a interface do usuário adicionando controles a partir do Caixa de ferramentas em vez de adicionar controles acoplados do Fontes de dados janela.
Eventos são gerados em cada controle por controle e você deve adicionar código para manipular a exibição de dados.Quando um novo DataRepeaterItem é colocada na exibição de ItemValueNeeded evento é gerado uma vez para cada controle e você deve fornecer os valores para cada controle no ItemValueNeeded manipulador de eventos.
Se dados em um dos controles são alterados pelo usuário, a ItemValuePushed evento é gerado e você deve validar os dados e salvá-lo em sua fonte de dados.
Se o usuário adicionar um novo item, o NewItemNeeded evento é gerado. Use manipulador deste evento para criar um novo registro na fonte de dados.Para impedir alterações indesejadas, você também deve monitorar o KeyDown evento para cada controle e a telefonar CancelEdit Se o usuário pressionar ESC chave.
Finalmente, você deve implementar manipuladores de eventos para o ItemsRemoved evento que ocorre quando um item é excluído e, opcionalmente, para o UserDeletingItems e UserDeletedItems eventos ocorrem sempre que um usuário exclui um item, pressione a tecla excluir.
Implementando o modo virtual
A seguir está as etapas necessárias para implementar o modo virtual.
Para implementar o modo virtual
arrastar um DataRepeater controlar a partir do Visual Basic PowerPacks guia o Caixa de ferramentas para um controle de formulário ou contêiner.Defina a propriedade VirtualMode como True.
arrastar os controles do Caixa de ferramentas para a área de modelo de item (a região superior) do DataRepeater controle. Você precisará de um controle para cada campo na fonte de dados que você deseja exibir.
Implementar um manipulador para o ItemValueNeeded evento para fornecer valores para cada controle. Este evento é gerado quando um novo DataRepeaterItem é colocada na exibição. O código parecerá com o exemplo a seguir, que é para uma fonte de dados denominada 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; } } }
Implementar um manipulador para o ItemValuePushed evento para armazenar os dados. Este evento é ocasionado quando o usuário confirma as alterações a um controle filho do DataRepeaterItem. O código parecerá com o exemplo a seguir, que é para uma fonte de dados denominada 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; } }
Implementar um manipulador para KeyDown evento e monitorar a tecla ESC. Chamar o CancelEdit método para impedir que o ItemValuePushed evento de que está sendo gerado. O código parecerá com o exemplo a seguir.
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(); } }
Implementar um manipulador para o NewItemNeeded evento. Este evento é ocasionado quando o usuário adiciona um novo item à DataRepeater controle. O código parecerá com o exemplo a seguir, que é para uma fonte de dados denominada Employees.
Private Sub DataRepeater1_NewItemNeeded(ByVal sender As Object, _ ByVal e As System.EventArgs) 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; }
Implementar um manipulador para o ItemsRemoved evento. Esse evento ocorre quando um usuário exclui um item existente.O código parecerá com o exemplo a seguir, que é para uma fonte de dados denominada 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); }
Para validação em nível de controle, opcionalmente Implemente manipuladores para o Validating eventos de controles filho. O código parecerá com o exemplo a seguir.
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; } }
Consulte também
Conceitos
Introdução ao controle DataRepeater (Visual Studio)
Referência
Date |
History |
Motivo |
---|---|---|
Julho de 2008 |
Tópico adicional. |
Alteração de recurso do SP1. |