sábado, 26 de junio de 2010

IsPostBack

A veces cuando deseas que algo se haga al momento de que se levante una página lo puedes poner en el método Page_Load, de esta forma cada vez que se levante la página hará lo que esté en este método. Pero a veces necesitas que lo que esté en ese método se haga solo la primera vez que se cargue esta página y no cuando se vuelva a cargar, para eso utilizamos la propiedad IsPostBack.


if(IsPostBack)
{
      //haz algo
}


Esta propiedad devuelve un bool que indica si es la primera vez que se carga o es una respuesta a alguna petición del cliente. Si haces la pregunta anterior solo entrara al código del if cuando sea una recarga de la página.
Esto es muy útil cuando trabajas con controles (DropDownList por ejemplo) que creas en el método Page_Load  y no quieres que cambien al recargar la páginas. 


Por ejemplo, ya utilizo esta forma para llenar los campos de un formulario con datos de una base de datos al momento de levantar la página y cuando cambio el dato seleccionado de un DropDownList no se cambien los datos de los campos...


nota...  
          if(!isPostBack)
         {
              //haz algo la primera vez que se cargue la página
        }
        else
        {
            //actualizaciones que quieres hacer cada vez que se recargue la página
        }


Saludos !



viernes, 25 de junio de 2010

Crear Tablas dinámicas con C#

En ocasiones es necesario mostrar datos en una tabla que dependerán del estado de una base de datos, es decir, que al momento de diseñar la página no sabemos cuantas filas tendrá dicha tabla.
Para hacer esto tenemos dos sencillas maneras:
1) Primera Forma


 Dibujar una tabla directamente en la vista de Diseño de la página y en la vista Código eliminarle las filas y columnas que tenga. (Figura 1).

(Figura 1 - pincha para ver grande)

De esta manera puedes (en la vista Diseño) poner la tabla en el lugar que desees más fácilmente.
En las propiedades de la tabla (en la vista Código) agregale la propiedad id y runat en server. (Figura 2).


 (Figura 2 - pincha para ver grande)

Ahora ya puedes llamar a tu tabla desde el código c# para trabajar con ella.
En el archivo aspx.cs de tu página vamos a poner el código necesario, en este caso estará en el metodo Page_Load para que se cree la tabla apenas se levante la página.
Trabajando de esta forma debemos utilizar las clases HtlmTableRow para crear las filas necesaria y HtmlTableCell para las celdas. La manera lógica es crear una fila, crear una celda, agregar la celda a la fila y agregar la fila a la tabla:

HtmlTableRow fila = new HtmlTableRow();
HtmlTableCell celda = new HtmlTableCell();
fila.Cells.Add(celda);
tabla.Rows.Add(fila);

y listo!!
Aquí debes tener en cuenta que cada celda que agregues a la fila quedará al lado derecho de la anterior y cada fila que agregues a la tabla quedará debajo de la anterior (obvio xDD).

También debes considerar que sólo puedes agregar controles (System.Web.UI.Control) a las celdas así que si quieres escribir algo debes agregar un LiterlaControl("Palabra").


2) Segunda Forma

 Si quieres trabajar con elementos Table lo haces de la misma forma que antes sólo cambiando los nombres de las clases borrandoles el Html:

Table tabla = new Table();
TableRow fila = new TableRow();
TableCell celda = new TableCell();
fila.Cells.Add(celda);
tabla.Rows.Add(fila);


y listo :/ eso es...

saludos!