Mi colección

Anuncio
Mi colección
Validar datos en el
control DataGridView
de formularios
Windows Forms
Tutorial: Validar datos en el control
DataGridView de formularios Windows
Forms
.NET Framework
4.5
Cuando muestra funciones de entrada de datos a los usuarios, a menudo tiene que validar los datos escritos en el
formulario.La clase DataGridView proporciona una manera cómoda de realizar la validación antes de que los datos se
confirmen en el almacén de datos.Puede validar los datos controlando el evento CellValidating, que lo provoca
DataGridView cuando cambia la celda actual.
En este tutorial, recuperará filas de la tabla Customers de la base de datos de ejemplo Northwind y las mostrará en un
control DataGridView.Cuando un usuario edita una celda de la columna CompanyName e intenta abandonar la celda, el
controlador de eventos CellValidating examinará la cadena del nuevo nombre de empresa para asegurarse de que no
está vacía; si el nuevo valor es una cadena vacía, DataGridView impedirá que el cursor del usuario abandone la celda
hasta que no se especifique una cadena que no esté vacía.
Para copiar el código de este tema como un listado sencillo, vea Cómo: Validar datos en el control DataGridView de
formularios Windows Forms.
Requisitos previos
Para poder completar este tutorial, necesitará:
Acceso a un servidor con la base de datos de ejemplo Northwind de SQL Server.
http://pabprod.blob.core.windows.net/books/49777a9b-51ea-424c-8528-d924f0e3de18.html[06/02/2016 2:22:30 p. m.]
Mi colección
Crear el formulario
Para validar datos escritos en un DataGridView
1. Cree una clase que deriva de Form y contiene un control DataGridView y un componente BindingSource.
En el ejemplo de código siguiente se proporciona la inicialización básica y se incluye un método Main.
C#
using
using
using
using
System;
System.Data;
System.Data.SqlClient;
System.Windows.Forms;
public class Form1 : System.Windows.Forms.Form
{
private DataGridView dataGridView1 = new DataGridView();
private BindingSource bindingSource1 = new BindingSource();
public Form1()
{
// Initialize the form.
this.dataGridView1.Dock = DockStyle.Fill;
this.Controls.Add(dataGridView1);
this.Load += new EventHandler(Form1_Load);
this.Text = "DataGridView validation demo (disallows empty
CompanyName)";
}
C#
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.Run(new Form1());
}
}
2. Implemente un método en la definición de clase del formulario para controlar los detalles de conexión con la
base de datos.
En este ejemplo de código se utiliza un método GetData que devuelve un objeto DataTable
rellenado.Asegúrese de establecer la variable connectionString en un valor que sea adecuado para la base
de datos.
Seguridad Nota
El hecho de almacenar información confidencial, como una contraseña, en la cadena de conexión puede
afectar a la seguridad de la aplicación.El uso de la autenticación de Windows, también conocida como
seguridad integrada, es un modo más seguro de controlar el acceso a una base de datos.Para obtener más
información, vea Proteger la información de conexión.
C#
http://pabprod.blob.core.windows.net/books/49777a9b-51ea-424c-8528-d924f0e3de18.html[06/02/2016 2:22:30 p. m.]
Mi colección
private static DataTable GetData(string selectCommand)
{
string connectionString =
"Integrated Security=SSPI;Persist Security Info=False;" +
"Initial Catalog=Northwind;Data Source=localhost;Packet Size=4096";
// Connect to the database and fill a data table.
SqlDataAdapter adapter =
new SqlDataAdapter(selectCommand, connectionString);
DataTable data = new DataTable();
data.Locale = System.Globalization.CultureInfo.InvariantCulture;
adapter.Fill(data);
}
return data;
3. Implemente un controlador para el evento Load del formulario que inicializa DataGridView y BindingSource y
configura el enlace de datos.
C#
private void Form1_Load(System.Object sender, System.EventArgs e)
{
// Attach DataGridView events to the corresponding event handlers.
this.dataGridView1.CellValidating += new
DataGridViewCellValidatingEventHandler(dataGridView1_CellValidating);
this.dataGridView1.CellEndEdit += new
DataGridViewCellEventHandler(dataGridView1_CellEndEdit);
}
// Initialize the BindingSource and bind the DataGridView to it.
bindingSource1.DataSource = GetData("select * from Customers");
this.dataGridView1.DataSource = bindingSource1;
this.dataGridView1.AutoResizeColumns(
DataGridViewAutoSizeColumnsMode.AllCellsExceptHeader);
4. Implemente los controladores para los eventos CellValidating y CellEndEdit del control DataGridView.
El controlador de eventos CellValidating es donde se determina si el valor de una celda de la columna
CompanyName está vacío.Si el valor de celda no supera la validación, establezca la propiedad Cancel de la
clase System.Windows.Forms.DataGridViewCellValidatingEventArgs en true.Esto hace que el control
DataGridView evite que el cursor abandone la celda.Establezca la propiedad ErrorText en la fila en una cadena
explicativa.Esto muestra un icono de error con la información sobre herramientas que contiene el texto del
error.En el controlador de eventos CellEndEdit, establezca la propiedad ErrorText en la fila en la cadena
vacía.El evento CellEndEdit sólo aparece cuando la celda sale del modo de edición, que no puede hacerlo si
no se supera la validación.
C#
private void dataGridView1_CellValidating(object sender,
DataGridViewCellValidatingEventArgs e)
{
string headerText =
dataGridView1.Columns[e.ColumnIndex].HeaderText;
// Abort validation if cell is not in the CompanyName column.
if (!headerText.Equals("CompanyName")) return;
http://pabprod.blob.core.windows.net/books/49777a9b-51ea-424c-8528-d924f0e3de18.html[06/02/2016 2:22:30 p. m.]
Mi colección
}
// Confirm that the cell is not empty.
if (string.IsNullOrEmpty(e.FormattedValue.ToString()))
{
dataGridView1.Rows[e.RowIndex].ErrorText =
"Company Name must not be empty";
e.Cancel = true;
}
void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
// Clear the row error in case the user presses ESC.
dataGridView1.Rows[e.RowIndex].ErrorText = String.Empty;
}
Probar la aplicación
Puede comprobar el formulario para asegurarse de que se comporta de la forma prevista.
Para comprobar el formulario
Compile y ejecute la aplicación.
Verá un DataGridView rellenado con datos de la tabla Customers.Si hace doble clic en una celda de la
columna CompanyName, puede editar el valor.Si elimina todos los caracteres y presiona la tecla TAB para salir
de la celda, DataGridView impide que salga.Cuando escribe una cadena no vacía en la celda, el control
DataGridView le permite salir de la celda.
Pasos siguientes
Esta aplicación proporciona conocimientos básicos sobre las funciones del control DataGridView.Puede personalizar la
apariencia y el comportamiento del control DataGridView de varias formas:
Cambie los estilos de borde y encabezado.Para obtener más información, vea Cómo: Cambiar los estilos de
borde y línea de la cuadrícula en el control DataGridView de formularios Windows Forms.
Permita o restringa los datos proporcionados por el usuario al control DataGridView.Para obtener más
información, vea Cómo: Impedir la adición y eliminación de filas en el control DataGridView de formularios
Windows Forms y Cómo: Crear columnas de sólo lectura en el control DataGridView de formularios Windows
Forms.
Compruebe si los datos proporcionados por el usuario tienen errores relacionados con base de datos.Para
obtener más información, vea Tutorial: Controlar los errores que se producen durante la entrada de datos en el
control DataGridView de formularios Windows Forms.
Controle conjuntos de grandes volúmenes de datos utilizando el modo virtual.Para obtener más información, vea
Tutorial: Implementar el modo virtual en el control DataGridView de formularios Windows Forms.
Personalice la apariencia de las celdas.Para obtener más información, vea Cómo: Personalizar la apariencia de las
celdas en el control DataGridView de formularios Windows Forms y Cómo: Establecer estilos de colores y fuentes
en el control DataGridView de formularios Windows Forms.
http://pabprod.blob.core.windows.net/books/49777a9b-51ea-424c-8528-d924f0e3de18.html[06/02/2016 2:22:30 p. m.]
Mi colección
Vea también
DataGridView
BindingSource
Entrada de datos en el control DataGridView de formularios Windows Forms
Cómo: Validar datos en el control DataGridView de formularios Windows Forms
Tutorial: Controlar los errores que se producen durante la entrada de datos en el control DataGridView de formularios
Windows Forms
Proteger la información de conexión
© 2016 Microsoft
Cómo: Validar datos en el control
DataGridView de formularios Windows
Forms
.NET Framework
4.5
El ejemplo de código siguiente muestra cómo validar datos introducidos por un usuario en un control DataGridView.En
este ejemplo, DataGridView se rellena con filas de la tabla Customers de la base de datos de ejemplo
Northwind.Cuando el usuario edita una celda en la columna CompanyName, se comprueba la validez de su valor
verificando que no está vacío.Si el controlador de eventos del evento CellValidating detecta que el valor es una cadena
vacía, DataGridView impide que el usuario salga de la celda hasta que se especifique una cadena que no esté vacía.
Para una explicación más completa de este ejemplo de código, consulte Tutorial: Validar datos en el control
DataGridView de formularios Windows Forms.
C#
using
using
using
using
System;
System.Data;
System.Data.SqlClient;
System.Windows.Forms;
public class Form1 : System.Windows.Forms.Form
{
private DataGridView dataGridView1 = new DataGridView();
private BindingSource bindingSource1 = new BindingSource();
public Form1()
{
// Initialize the form.
this.dataGridView1.Dock = DockStyle.Fill;
this.Controls.Add(dataGridView1);
this.Load += new EventHandler(Form1_Load);
this.Text = "DataGridView validation demo (disallows empty CompanyName)";
}
private void Form1_Load(System.Object sender, System.EventArgs e)
{
// Attach DataGridView events to the corresponding event handlers.
http://pabprod.blob.core.windows.net/books/49777a9b-51ea-424c-8528-d924f0e3de18.html[06/02/2016 2:22:30 p. m.]
Mi colección
this.dataGridView1.CellValidating += new
DataGridViewCellValidatingEventHandler(dataGridView1_CellValidating);
this.dataGridView1.CellEndEdit += new
DataGridViewCellEventHandler(dataGridView1_CellEndEdit);
}
// Initialize the BindingSource and bind the DataGridView to it.
bindingSource1.DataSource = GetData("select * from Customers");
this.dataGridView1.DataSource = bindingSource1;
this.dataGridView1.AutoResizeColumns(
DataGridViewAutoSizeColumnsMode.AllCellsExceptHeader);
private void dataGridView1_CellValidating(object sender,
DataGridViewCellValidatingEventArgs e)
{
string headerText =
dataGridView1.Columns[e.ColumnIndex].HeaderText;
// Abort validation if cell is not in the CompanyName column.
if (!headerText.Equals("CompanyName")) return;
}
// Confirm that the cell is not empty.
if (string.IsNullOrEmpty(e.FormattedValue.ToString()))
{
dataGridView1.Rows[e.RowIndex].ErrorText =
"Company Name must not be empty";
e.Cancel = true;
}
void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
// Clear the row error in case the user presses ESC.
dataGridView1.Rows[e.RowIndex].ErrorText = String.Empty;
}
private static DataTable GetData(string selectCommand)
{
string connectionString =
"Integrated Security=SSPI;Persist Security Info=False;" +
"Initial Catalog=Northwind;Data Source=localhost;Packet Size=4096";
// Connect to the database and fill a data table.
SqlDataAdapter adapter =
new SqlDataAdapter(selectCommand, connectionString);
DataTable data = new DataTable();
data.Locale = System.Globalization.CultureInfo.InvariantCulture;
adapter.Fill(data);
}
return data;
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.Run(new Form1());
}
}
http://pabprod.blob.core.windows.net/books/49777a9b-51ea-424c-8528-d924f0e3de18.html[06/02/2016 2:22:30 p. m.]
Mi colección
Compilar el código
Para este ejemplo se necesita:
Referencias a los ensamblados System, System.Data, System.Windows.Forms y System.XML.
Para obtener información acerca de cómo generar este ejemplo desde la línea de comandos para Visual Basic o Visual
C#, consulte Compilar desde la línea de comandos (Visual Basic) o Command-line Building With csc.exe.También puede
compilar este ejemplo en Visual Studio pegando el código en un nuevo proyecto.Consulte también Cómo: Compilar y
ejecutar un ejemplo de código completo de Windows Forms en Visual Studio.
Seguridad de .NET Framework
Almacenar información confidencial, como una contraseña, en la cadena de conexión puede afectar a la seguridad de la
aplicación.El uso de la autenticación de Windows (también conocida como seguridad integrada) es un modo más seguro
de controlar el acceso a una base de datos.Para obtener más información, consulte Proteger la información de conexión.
Vea también
DataGridView
BindingSource
Tutorial: Validar datos en el control DataGridView de formularios Windows Forms
Entrada de datos en el control DataGridView de formularios Windows Forms
Tutorial: Controlar los errores que se producen durante la entrada de datos en el control DataGridView de formularios
Windows Forms
Proteger la información de conexión
© 2016 Microsoft
Tutorial: Controlar los errores que se
producen durante la entrada de datos en
el control DataGridView de formularios
Windows Forms
.NET Framework
4.5
Una característica necesaria para una aplicación de entrada de datos es el control de errores del almacén de datos
subyacente.El control DataGridView de formularios Windows Forms facilita ésto exponiendo el evento DataError, que se
produce cuando el almacén de datos detecta una infracción de restricción o de regla empresarial.
En este tutorial, recuperará filas de la tabla Customers de la base de datos de ejemplo Northwind y las mostrará en un
control DataGridView.Si se detecta un valor de CustomerID duplicado en una nueva fila o una fila existente editada, se
producirá el evento DataError, que se puede controlar mostrando un MessageBox que describe la excepción.
Para copiar el código de este tema como un listado sencillo, vea Cómo: Controlar los errores que se producen durante la
entrada de datos en el control DataGridView de formularios Windows Forms.
http://pabprod.blob.core.windows.net/books/49777a9b-51ea-424c-8528-d924f0e3de18.html[06/02/2016 2:22:30 p. m.]
Mi colección
Requisitos previos
Para poder completar este tutorial, necesitará:
Acceso a un servidor con la base de datos de ejemplo Northwind de SQL Server.
Crear el formulario
Para controlar los errores de entrada de datos del control DataGridView
1. Cree una clase que deriva de Form y contiene un control DataGridView y un componente BindingSource.
En el ejemplo de código siguiente se proporciona la inicialización básica y se incluye un método Main.
C#
using
using
using
using
System;
System.Data;
System.Data.SqlClient;
System.Windows.Forms;
public class Form1 : System.Windows.Forms.Form
{
private DataGridView dataGridView1 = new DataGridView();
private BindingSource bindingSource1 = new BindingSource();
public Form1()
{
// Initialize the form.
this.dataGridView1.Dock = DockStyle.Fill;
this.Controls.Add(dataGridView1);
this.Load += new EventHandler(Form1_Load);
}
C#
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.Run(new Form1());
}
}
2. Implemente un método en la definición de clase del formulario para controlar los detalles de conexión con la
base de datos.
En este ejemplo de código se utiliza un método GetData que devuelve un objeto DataTable
rellenado.Asegúrese de establecer la variable connectionString en un valor que sea adecuado para la base
de datos.
Seguridad Nota
http://pabprod.blob.core.windows.net/books/49777a9b-51ea-424c-8528-d924f0e3de18.html[06/02/2016 2:22:30 p. m.]
Mi colección
El hecho de almacenar información confidencial, como una contraseña, en la cadena de conexión puede
afectar a la seguridad de la aplicación.El uso de la autenticación de Windows (también conocida como
seguridad integrada) es un modo más seguro de controlar el acceso a una base de datos.Para obtener
más información, vea Proteger la información de conexión.
C#
private static DataTable GetData(string selectCommand)
{
string connectionString =
"Integrated Security=SSPI;Persist Security Info=False;" +
"Initial Catalog=Northwind;Data Source=localhost;Packet Size=4096";
// Connect to the database and fill a data table, including the
// schema information that contains the CustomerID column
// constraint.
SqlDataAdapter adapter =
new SqlDataAdapter(selectCommand, connectionString);
DataTable data = new DataTable();
data.Locale = System.Globalization.CultureInfo.InvariantCulture;
adapter.Fill(data);
adapter.FillSchema(data, SchemaType.Source);
}
return data;
3. Implemente un controlador para el evento Load del formulario que inicializa DataGridView y BindingSource y
configura el enlace de datos.
C#
private void Form1_Load(System.Object sender, System.EventArgs e)
{
// Attach the DataError event to the corresponding event handler.
this.dataGridView1.DataError +=
new DataGridViewDataErrorEventHandler(dataGridView1_DataError);
}
// Initialize the BindingSource and bind the DataGridView to it.
bindingSource1.DataSource = GetData("select * from Customers");
this.dataGridView1.DataSource = bindingSource1;
this.dataGridView1.AutoResizeColumns(
DataGridViewAutoSizeColumnsMode.AllCellsExceptHeader);
4. Controle el evento DataError en DataGridView.
Si el contexto del error es una operación de confirmación, muestre el error en MessageBox.
C#
private void dataGridView1_DataError(object sender,
DataGridViewDataErrorEventArgs e)
{
// If the data source raises an exception when a cell value is
// commited, display an error message.
if (e.Exception != null &&
e.Context == DataGridViewDataErrorContexts.Commit)
{
MessageBox.Show("CustomerID value must be unique.");
http://pabprod.blob.core.windows.net/books/49777a9b-51ea-424c-8528-d924f0e3de18.html[06/02/2016 2:22:30 p. m.]
Mi colección
}
}
Probar la aplicación
Puede comprobar el formulario para asegurarse de que se comporta de la forma prevista.
Para comprobar el formulario
Presione F5 para ejecutar la aplicación.
Aparecerá un control DataGridView rellenado con datos de la tabla Customers.Si especifica un valor duplicado
para CustomerID y confirma la edición, se invertirá automáticamente el valor de la celda y aparecerá un
MessageBox que muestra el error de la entrada de datos.
Pasos siguientes
Esta aplicación proporciona conocimientos básicos sobre las funciones del control DataGridView.Puede personalizar la
apariencia y el comportamiento del control DataGridView de varias formas:
Cambie los estilos de borde y encabezado.Para obtener más información, vea Cómo: Cambiar los estilos de
borde y línea de la cuadrícula en el control DataGridView de formularios Windows Forms.
Permita o restringa los datos proporcionados por el usuario al control DataGridView.Para obtener más
información, vea Cómo: Impedir la adición y eliminación de filas en el control DataGridView de formularios
Windows Forms y Cómo: Crear columnas de sólo lectura en el control DataGridView de formularios Windows
Forms.
Valide los datos proporcionados por el usuario al control DataGridView.Para obtener más información, vea
Tutorial: Validar datos en el control DataGridView de formularios Windows Forms.
Controle conjuntos de grandes volúmenes de datos utilizando el modo virtual.Para obtener más información, vea
Tutorial: Implementar el modo virtual en el control DataGridView de formularios Windows Forms.
Personalice la apariencia de las celdas.Para obtener más información, vea Cómo: Personalizar la apariencia de las
celdas en el control DataGridView de formularios Windows Forms y Cómo: Establecer estilos de celda
predeterminados para el control DataGridView de formularios Windows Forms.
Vea también
DataGridView
BindingSource
Entrada de datos en el control DataGridView de formularios Windows Forms
Cómo: Controlar los errores que se producen durante la entrada de datos en el control DataGridView de formularios
Windows Forms
Tutorial: Validar datos en el control DataGridView de formularios Windows Forms
Proteger la información de conexión
© 2016 Microsoft
http://pabprod.blob.core.windows.net/books/49777a9b-51ea-424c-8528-d924f0e3de18.html[06/02/2016 2:22:30 p. m.]
Mi colección
Cómo: Controlar los errores que se
producen durante la entrada de datos en
el control DataGridView de formularios
Windows Forms
.NET Framework
4.5
En el ejemplo de código siguiente, se muestra cómo utilizar el control DataGridView para informar de errores de entrada
de datos al usuario.
Para una explicación más completa de este ejemplo de código, consulte Tutorial: Controlar los errores que se producen
durante la entrada de datos en el control DataGridView de formularios Windows Forms.
C#
using
using
using
using
System;
System.Data;
System.Data.SqlClient;
System.Windows.Forms;
public class Form1 : System.Windows.Forms.Form
{
private DataGridView dataGridView1 = new DataGridView();
private BindingSource bindingSource1 = new BindingSource();
public Form1()
{
// Initialize the form.
this.dataGridView1.Dock = DockStyle.Fill;
this.Controls.Add(dataGridView1);
this.Load += new EventHandler(Form1_Load);
}
private void Form1_Load(System.Object sender, System.EventArgs e)
{
// Attach the DataError event to the corresponding event handler.
this.dataGridView1.DataError +=
new DataGridViewDataErrorEventHandler(dataGridView1_DataError);
}
// Initialize the BindingSource and bind the DataGridView to it.
bindingSource1.DataSource = GetData("select * from Customers");
this.dataGridView1.DataSource = bindingSource1;
this.dataGridView1.AutoResizeColumns(
DataGridViewAutoSizeColumnsMode.AllCellsExceptHeader);
private void dataGridView1_DataError(object sender,
DataGridViewDataErrorEventArgs e)
{
// If the data source raises an exception when a cell value is
// commited, display an error message.
if (e.Exception != null &&
e.Context == DataGridViewDataErrorContexts.Commit)
http://pabprod.blob.core.windows.net/books/49777a9b-51ea-424c-8528-d924f0e3de18.html[06/02/2016 2:22:30 p. m.]
Mi colección
{
}
}
MessageBox.Show("CustomerID value must be unique.");
private static DataTable GetData(string selectCommand)
{
string connectionString =
"Integrated Security=SSPI;Persist Security Info=False;" +
"Initial Catalog=Northwind;Data Source=localhost;Packet Size=4096";
// Connect to the database and fill a data table, including the
// schema information that contains the CustomerID column
// constraint.
SqlDataAdapter adapter =
new SqlDataAdapter(selectCommand, connectionString);
DataTable data = new DataTable();
data.Locale = System.Globalization.CultureInfo.InvariantCulture;
adapter.Fill(data);
adapter.FillSchema(data, SchemaType.Source);
}
return data;
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.Run(new Form1());
}
}
Compilar el código
Para este ejemplo se necesita:
Referencias a los ensamblados System, System.Data, System.Windows.Forms y System.XML.
Para obtener información acerca de cómo generar este ejemplo desde la línea de comandos para Visual Basic o Visual
C#, consulte Compilar desde la línea de comandos (Visual Basic) o Command-line Building With csc.exe.También puede
compilar este ejemplo en Visual Studio pegando el código en un nuevo proyecto.Consulte también Cómo: Compilar y
ejecutar un ejemplo de código completo de Windows Forms en Visual Studio.
Seguridad de .NET Framework
Almacenar información confidencial, como una contraseña, en la cadena de conexión puede afectar a la seguridad de la
aplicación.El uso de la autenticación de Windows (también conocida como seguridad integrada) es un modo más seguro
de controlar el acceso a una base de datos.Para obtener más información, consulte Proteger la información de conexión.
Vea también
DataGridView
BindingSource
Tutorial: Controlar los errores que se producen durante la entrada de datos en el control DataGridView de formularios
Windows Forms
http://pabprod.blob.core.windows.net/books/49777a9b-51ea-424c-8528-d924f0e3de18.html[06/02/2016 2:22:30 p. m.]
Mi colección
Entrada de datos en el control DataGridView de formularios Windows Forms
Tutorial: Validar datos en el control DataGridView de formularios Windows Forms
Proteger la información de conexión
© 2016 Microsoft
http://pabprod.blob.core.windows.net/books/49777a9b-51ea-424c-8528-d924f0e3de18.html[06/02/2016 2:22:30 p. m.]
Descargar