miércoles, 19 de diciembre de 2007

Tipos de controles de validación .NET 2

The simplest form of validation is a required field. La forma más simple de la validación es un campo requerido. If the user enters any value in a field, it is valid. Si el usuario no introduce ningún valor en un campo, es inválido. If all of the fields in the page are valid, the page is valid. Si cualquiera de los campos en la página son válidos, la página es válida. The following example illustrates this using the RequiredFieldValidator . El siguiente ejemplo ilustra este uso de la RequiredFieldValidator.

There are also validation controls for specific types of validation, such as range checking or pattern matching. También existen controles de validación para tipos específicos de validación, como la gama de cheques o de coincidencia de patrones. The following table lists the validation controls. La siguiente tabla muestra los controles de validación.

Control Name Control Nombre

Description Descripción

RequiredFieldValidator RequiredFieldValidator

Ensures that the user does not skip an entry. Se asegura de que el usuario no pase de entrada.

CompareValidator CompareValidator

Compares a user's entry with a constant value or a property value of another control using a comparison operator (less than, equal to, greater than, and so on). Compara la entrada de un usuario con un valor constante o un valor de la propiedad de otro a través de un operador de comparación (menor que, igual, superior, y así sucesivamente).

RangeValidator RangeValidator

Checks that a user's entry is between specified lower and upper boundaries. Comprueba que el usuario no está especificado entre los límites inferior y superior. You can check ranges within pairs of numbers, alphabetic characters, or dates. Puede comprobar rangos dentro de pares de números, caracteres alfabéticos, o fechas. Boundaries can be expressed as constants. Boundaries puede expresarse como constantes.

RegularExpressionValidator RegularExpressionValidator

Checks that the entry matches a pattern defined by a regular expression. Comprueba que la entrada coincide con un patrón definido por una expresión regular. This type of validation allows you to check for predictable sequences of characters, such as those in social security numbers, e-mail addresses, telephone numbers, postal codes, and so on. Este tipo de validación le permite comprobar secuencias de caracteres previsibles, como las de los números de seguro social, direcciones de correo electrónico, números de teléfono, códigos postales, etc.

CustomValidator CustomValidator

Checks the user's entry using validation logic that you code yourself. Los controles de la entrada del usuario usando la lógica de validación de código que usted mismo. This type of validation allows you to check for values derived at run time. Este tipo de validación permite comprobar de valores derivados en tiempo de ejecución.

ValidationSummary ValidationSummary

Displays the validation errors in summary form for all of the validators on a page. Muestra los errores de validación en forma resumida para todos los validadores en una página.


Exportar un Datagrid a Excel (ASP.NET)

Asís García Chao

 

El control DataGrid de ASP.NET es muy útil para realizar listados que se puedan consultar en la web. Este control es de uso muy sencillo y permite paginar los resultados, ordenarlos por cualquier columna o editar sus celdas.

Imaginémonos la siguiente situación: hemos creado un listado para una aplicación en una Intranet y lo mostramos en una página aspx utilizando un DataGrid. Supongamos ahora que nos interesa trabajar con ese listado manejándolo con Excel. Una manera sencilla de conseguirlo es la que se presenta a continuación:

Supongamos lo siguiente:

  • El listado es generado por un control DataGrid llamado 'dataGrid' y se muestra en una página aspx
  • Todos los controles adicionales (Connection, DataAdapter...) ya han sido añadidos y están correctamente "configurados" (es decir, tenemos un listado web completamente operativo)



En la misma página añadiremos un botón llamado 'verExcel' que exportará el listado a Excel.

El código del evento Page_Load podría ser similar al que se muestra:


private void Page_Load(object sender, System.EventArgs e)
{
    sqlConnection.Open();
    DataSet dataSet = new DataSet();
    sqlDataAdapter.Fill(dataSet);

    dataGrid.DataSource = dataSet;
    dataGrid.DataBind();
}



Las dos últimas líneas de código son las que enlazan los datos de la consulta ejecutada por el DataAdapter (que serán los datos de nuestro listado) al DataGrid para mostrarlos en la página web.

Para exportar ese listado a Excel, lo único que necesitamos es cambiar el tipo MIME de la respuesta del servidor a "application/vnd.ms-excel". Cuando el navegador del cliente recibe la respuesta, si Excel está instalado, permite al usuario abrir directamente el fichero o guardarlo. El propio programa (Excel) se encarga de representar la tabla HTML que genera el DataGrid como una hoja Excel.

Lo que haremos será añadir código al evento de click del botón para cambiar el tipo MIME de la respuesta. Además, tendremos que controlar un par de cosillas para asegurar que todo funciona correctamente.


private void verExcel_Click(object sender, System.EventArgs e) {
    // No enviamos la respuesta hasta que hemos
    // terminado de procesar todo
    Response.Buffer = true;

    // Ponemos el tipo de la respuesta al valor adecuado
    Response.ContentType = "application/vnd.ms-excel";

    // Desactivamos el view state, ya que no lo necesitamos
    this.EnableViewState = false;

    // Desactivamos propiedades conflictivas
    dataGrid.AllowPaging = false;
    dataGrid.AllowSorting = false;

    // Enlazamos los datos de nuevo para reflejar
    // los cambios
    dataGrid.DataBind();


    // A continuación escribiremos el HTML que genera
    // el dataGrid en la respuesta para enviárselo al
    // cliente
    System.IO.StringWriter tw = new System.IO.StringWriter();
    HtmlTextWriter hw = new HtmlTextWriter(tw);

    dataGrid.RenderControl(hw);

    Response.Write(tw.ToString());

    // Enviamos los datos al cliente
    Response.End();
}



Unos comentarios acerca de este código:

En primer lugar, para evitar que el servidor comience a enviar datos al cliente antes de que se haya generado todo el contenido del DataGrid, utilizamos
Response.Buffer = true para indicar al servidor que espere a que realicemos todo el procesamiento necesario. Cuando hemos terminado, con Response.End() indicamos que la respuesta ya se puede enviar.

En segundo lugar, desactivamos el view state, ya que no vamos a mostrar datos en un formulario HTML y no necesitamos mantener el estado en el que se encuentran los controles de la página. También desactivamos la capacidad de paginación y de ordenamiento. Hay dos razones para hacer esto.

1.     Mostrar todo el listado en la hoja Excel, no sólo una página

2.     Evitar problemas en tiempo de ejecución. Me explico: el control DataGrid genera, para los enlaces que permiten ordenar o paginar el listado, código HTML que necesita estar dentro de un Web Form ASP.NET (esto es, tiene que estar entre los tags <form id="miform" runat="server"> y </form>). Cuando mostramos el DataGrid en el navegador como HTML en una página web, no hay problema. Pero cuando nos quedamos tan sólo con el HTML generado por el control DataGrid, como sucede en este ejemplo, obtendremos un error al ejecutar el código anterior, ya que el HTML generado por el DataGrid no se encuentra en un Web Form.



En tercer lugar, para garantizar que el DataGrid genera HTML sin los problemas anteriores, volvemos a enlazar los datos (esto se debería cambiar, ya que ahora mismo estamos enlazando los datos dos veces: una al cargar la página -evento Page_Load- y otra al hacer click).

Por último, utilizando un HtmlTextWriter y un StringWriter extraemos el HTML que genera el DataGrid (usando
dataGrid.RenderControl(hw) y lo escribimos en la respuesta.

Al ejecutar la página y pulsar sobre el botón, veremos un cuadro de diálogo en el que se nos informa de que nos vamos a descargar un fichero de tipo "Hoja de cálculo de Microsoft Excel" y se nos da la opción de abrirlo o guardarlo (según el navegador que estemos utilizando, la opción de abrir estará o no disponible). Si lo abrimos (sólo con el IE) veremos la hoja Excel embebida en el navegador. También podemos salvar la hoja a disco y abrirla con Excel.

Bueno, espero que haya quedado todo claro. Comentarios, dudas, críticas o sugerencias serán bienvenidos.

 


Autor: Asís García Chao

 

 

De donde es una dirección IP

Muchas veces nos preguntamos como saber de que lugar del mundo es una dirección IP, ese numerito bastante largo que identifica la dirección de un usuario o robot que visita internet y lo diferencia de otros.
Lo queremos saber cuando nos interesa por ejemplo desde donde, lugar del mundo, ubicación nos fue enviado un email, o donde esta ubicado un servidor o robots que visitan nuestra web.
Te preguntaras y para que sirve conocer la dirección IP, pues sencillo, solo por curiosidad, pero en otros casos es bastante útil sobre todo cuando se trata de visitas o email indeseables, los cuales se pueden banear o bloquear conociendo su dirección IP.

Bueno buscaba una heramienta de esas que me permitiera saber algo más allá de una indescifrable dirección IP y me encontre con esta pagina http://www.dnsstuff.com que tiene múltiples opciones, aviso que la web en cuestion esta en ingles, para quien no entienda mucho del idioma de Shakespeare, la caja de busqueda que sirve para buscar datos de una determina IP es la ultima caja de la columna llamada
IP Tests alli debes copiar textualmente la dirección IP por ejemplo 220.181.19.162 luego haces click (pinchas) en lookup y voila te aparecera una nueva página que entre otros datos de dira la ciudad y el pais al que corresponde esa dirección, además desde que número hasta que número abarca las direcciones que pertenecen al mismo servidor de IP.

 

 

Diego R. Dessimoni

Analista de Sistema

http://diego-ruben-dessimoni.neurona.com

 

Administrar comillas utilizando el método Replace de la clase String

En este ejemplo veremos cómo utilizar el método Replace de la clase String. Este ejemplo reemplaza comillas simples entre dos comillas simples adyacentes para asegurarse de que los datos tienen el formato correcto cuando se concatenan valores para una instrucción SQL.
Contenido 1
Metodo Replace de la Clase String
string Replace(string aSustituir, string sustituta): Devuelve la cadena resultante de sustituir en la cadena sobre la que se aplica toda aparición de la cadena aSustituir indicada por la cadena sustituta especificada como segundo parámetro.

A continuación sigue código en C# (C Sharp):
public string QuitarApostrofe(string vCadena)
{
vCadena = vCadena.Replace("'", "''");
return vCadena;
}
public void e50factu()
{
//Cadena a la cual se le va a sustituir la comilla.
string MiCadena = QuitarApostrofe("WARNER'S DE MEXICO SA DE CV ");
//Abro la conexion
ConecServer.Open();
OleDbCommand mycmd = ConecServer.CreateCommand();
OleDbTransaction Trans;
Trans = ConecServer.BeginTransaction(IsolationLevel.ReadCommitted);
mycmd.Connection = ConecServer;
mycmd.Transaction = Trans;
try
{
strSQL = "INSERT INTO e50factu(serie50,numero50,descri50) " +
"VALUES ('" + clsVariables.vSerie + "'," + 20356 + ",'" + MiCadena + "')";
mycmd.CommandText = strSQL;
mycmd.ExecuteNonQuery();
strSQL = "INSERT INTO A50COTI(folio,factura,usuario,hora,serie)" +
"VALUES(" + 1 + "," + 20356 + "," + "evallejo" + ",'" + "12:00" + "','" + "B" + "')";
mycmd.CommandText = strSQL;
mycmd.ExecuteNonQuery();
Trans.Commit();
}
catch (System.Exception error)
{
try
{
Trans.Rollback();
MessageBox.Show("Ocurrio un error, no se realizo ningún cambio en la base de datos" +
error.Message,
"Guardar Factura", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
catch (OleDbException ex)
{
if (Trans.Connection != null)
{
MessageBox.Show("Ha ocurrido una excepción grave de tipo " + ex.GetType());
}
}
}
finally
{
ConecServer.Close();
}
}