Académique Documents
Professionnel Documents
Culture Documents
Crear el formulario
Para implementar el modo virtual
1.
Visual Basic
Copiar cdigo
Imports System
Imports System.Windows.Forms
Public Class Form1
Inherits Form
Private WithEvents dataGridView1 As New
DataGridView()
Copiar cdigo
using System;
using System.Windows.Forms;
public class Form1 : Form
{
private DataGridView dataGridView1 = new
DataGridView();
// Declare an ArrayList to serve as the data
store.
private System.Collections.ArrayList customers
=
new System.Collections.ArrayList();
// Declare a Customer object to store data for
a row being edited.
private Customer customerInEdit;
// Declare a variable to store the index of a
row being edited.
// A value of -1 indicates that there is no row
currently in edit.
private int rowInEdit = -1;
// Declare a variable to indicate the commit
scope.
// Set this value to false to use cell-level
commit scope.
private bool rowScopeCommit = true;
[STAThreadAttribute()]
public static void Main()
{
Application.Run(new Form1());
}
public Form1()
{
// Initialize the form.
this.dataGridView1.Dock = DockStyle.Fill;
this.Controls.Add(this.dataGridView1);
this.Load += new EventHandler(Form1_Load);
this.Text = "DataGridView virtual-mode demo
(row-level commit scope)";
}
...
}
2.
Implemente un controlador para el evento Load del formulario que inicializa el control
DataGridView y rellena el almacn de datos con valores de ejemplo.
Visual Basic
Copiar cdigo
"Laurence Lebihan"))
Me.customers.Add(New Customer("Bottom-Dollar
Markets", _
"Elizabeth Lincoln"))
Me.customers.Add(New Customer("B's Beverages",
"Victoria Ashworth"))
' Set the row count, including the row for new
records.
Me.dataGridView1.RowCount = 4
End Sub
C#
Copiar cdigo
DataGridViewCellValueEventHandler(dataGridView1_CellValueNeed
this.dataGridView1.CellValuePushed += new
DataGridViewCellValueEventHandler(dataGridView1_CellValuePush
this.dataGridView1.NewRowNeeded += new
DataGridViewRowEventHandler(dataGridView1_NewRowNeede
this.dataGridView1.RowValidated += new
DataGridViewCellEventHandler(dataGridView1_RowValidat
this.dataGridView1.RowDirtyStateNeeded += new
QuestionEventHandler(dataGridView1_RowDirtyStateNeede
this.dataGridView1.CancelRowEdit += new
QuestionEventHandler(dataGridView1_CancelRowEdit);
this.dataGridView1.UserDeletingRow += new
DataGridViewRowCancelEventHandler(dataGridView1_UserDeletingR
// Add columns to the DataGridView.
DataGridViewTextBoxColumn companyNameColumn = new
DataGridViewTextBoxColumn();
companyNameColumn.HeaderText = "Company Name";
companyNameColumn.Name = "Company Name";
DataGridViewTextBoxColumn contactNameColumn = new
DataGridViewTextBoxColumn();
contactNameColumn.HeaderText = "Contact Name";
contactNameColumn.Name = "Contact Name";
this.dataGridView1.Columns.Add(companyNameColumn);
this.dataGridView1.Columns.Add(contactNameColumn);
this.dataGridView1.AutoSizeColumnsMode =
DataGridViewAutoSizeColumnsMode.AllCells;
// Add some sample entries to the data store.
this.customers.Add(new Customer(
"Bon app'", "Laurence Lebihan"));
this.customers.Add(new Customer(
"Bottom-Dollar Markets", "Elizabeth Lincoln"));
this.customers.Add(new Customer(
"B's Beverages", "Victoria Ashworth"));
}
4.
// Set the row count, including the row for new records.
this.dataGridView1.RowCount = 4;
Implemente un controlador para el evento CellValueNeeded que recupera el valor de celda
solicitado del almacn de datos o el objeto Customer actualmente en edicin.
Este evento aparece cada vez que el control DataGridView tiene que dibujar una celda.
Visual Basic
Copiar cdigo
Copiar cdigo
}
Implemente un controlador para el evento CellValuePushed que almacena un valor de celda
editado en el objeto Customer que representa la fila editada. Este evento se produce cada vez
que el usuario confirma un cambio de valor de celda.
Visual Basic
Copiar cdigo
Copiar cdigo
}
7.
Este evento aparece cada vez que el usuario especifica la fila de nuevos registros.
Visual Basic
Copiar cdigo
Copiar cdigo
Implemente un controlador para el evento RowValidated que guarda las filas nuevas o
modificadas en el almacn de datos.
Este evento aparece cada vez que el usuario cambia la fila actual.
Visual Basic
Copiar cdigo
Copiar cdigo
Visual Basic
Copiar cdigo
Copiar cdigo
private void
dataGridView1_RowDirtyStateNeeded(object sender,
System.Windows.Forms.QuestionEventArgs e)
{
if (!rowScopeCommit)
{
// In cell-level commit scope, indicate
whether the value
// of the current cell has been modified.
e.Response =
this.dataGridView1.IsCurrentCellDirty;
}
}
10. Implemente un controlador para el evento CancelRowEdit que descarta los valores del
objeto Customer que representa la fila actual.
Se produce este evento cuando el usuario seala la reversin de la fila presionando dos veces
ESC en modo de edicin o una vez fuera del modo de edicin. No se produce este evento si no
se ha modificado ninguna celda de la fila actual o si se ha establecido el valor de la propiedad
System.Windows.Forms.QuestionEventArgs.Response en false en un controlador de
eventos RowDirtyStateNeeded.
Visual Basic
Copiar cdigo
Copiar cdigo
object.
this.customerInEdit = null;
this.rowInEdit = -1;
}
11. Implemente un controlador para el evento UserDeletingRow que suprime un objeto Customer
existente del almacn de datos o descarta un objeto Customer no guardado que representa
una fila recin creada.
Se produce este evento siempre que el usuario elimina una fila haciendo clic en un encabezado
de fila y presionando la tecla SUPR.
Visual Basic
Copiar cdigo
Copiar cdigo
Visual Basic
Copiar cdigo
End Sub
Public Property CompanyName() As String
Get
Return companyNameValue
End Get
Set(ByVal value As String)
companyNameValue = value
End Set
End Property
Public Property ContactName() As String
Get
Return contactNameValue
End Get
Set(ByVal value As String)
contactNameValue = value
End Set
End Property
End Class
C#
Copiar cdigo
Pasos siguientes
Esta aplicacin proporciona conocimientos bsicos de los eventos que debe controlar para implementar
el modo virtual en el control DataGridView. Puede mejorar esta aplicacin bsica de varios maneras:
Implemente un almacn de datos que almacena en memoria cach los valores de una base de
datos externa. La cach recuperar y descartar valores segn sea necesario de modo que slo
contenga lo que es necesario para la presentacin a la vez que utiliza una pequea cantidad de
memoria en el equipo cliente.
Ajuste el rendimiento del almacn de datos en funcin de sus requisitos. Por ejemplo, quiz
desee compensar las conexiones de red ralentizadas en lugar de las limitaciones de memoria del
equipo cliente utilizando un tamao mayor de cach y minimizando el nmero de consultas de
base de datos.
Para obtener ms informacin sobre cmo almacenar en memoria cach valores de una base de datos
externa, vea Cmo: Implementar el modo virtual con la carga de datos Just-In-Time en el control
DataGridView de formularios Windows Forms.
Vea tambin
Tareas
Cmo: Implementar el modo virtual en el control DataGridView de formularios Windows Forms
Referencia
DataGridView
VirtualMode
CellValueNeeded
CellValuePushed
NewRowNeeded
RowValidated
RowDirtyStateNeeded
CancelRowEdit
UserDeletingRow
Conceptos
Procedimientos recomendados para ajustar la escala del control DataGridView en formularios Windows
Forms
Implementar el modo virtual mediante la carga de datos Just-In-Time en el control DataGridView de
formularios Windows Forms
Otros recursos
Ajuste del rendimiento del control DataGridView en formularios Windows Forms
Para realizar una sugerencia o comunicar un error sobre la Ayuda u otra funcin de este producto, vaya al sitio
Product Feedback Center.