Escolar Documentos
Profissional Documentos
Cultura Documentos
El hecho de lograr ambas tareas de forma simultanea en pginas ASP.NET presenta un pequeo cuidado; se debe mantener el ndice de la pgina en la que estamos cuando establecemos un nuevo criterio de ordenamiento. De la misma forma debemos mantener el criterio de ordenamiento al cambiar el ndice de la pgina a la que queremos acceder. El cdigo que sigue es un ejemplo o una de las formas, siempre hay mas de una forma :), de como se puede lograr esta tarea.- SortingPaging.aspx (nuestra pgina aspx)
<asp:GridView ID="gridSample" runat="server" AutoGenerateColumns="false" AllowPaging = "true" OnPageIndexChanging = "gridView_PageIndexChanging" PageSize = "5" AllowSorting = "true" OnSorting = "gridView_Sorting"> <Columns> <asp:BoundField HeaderText="Nombre" DataField="Nombre" SortExpression = "Nombre" /> <asp:BoundField HeaderText="Edad" DataField="edad" SortExpression = "edad" /> </Columns> </asp:GridView> - SortingPaging.aspx.cs (nuestro archivo de code behind) using using using using System; System.Data; System.Web.UI; System.Web.UI.WebControls;
public partial class SortingPaging : Page { protected void Page_Load(object sender, EventArgs e) {
DataSet ds = new DataSet(); // Aqui llenamos nuestro DataSet DataView dv = ds.Tables[0].DefaultView; dv = sortDataView(dv, true); gridSample.DataSource = dv; gridSample.DataBind(); } private string GridSampleSortDirection { get { return ViewState["SortDirection"] as string ?? "ASC"; } set { ViewState["SortDirection"] = value; } } private string GridSampleSortExpression { get { return ViewState["SortExpression"] as string ?? "Nombre"; } set { ViewState["SortExpression"] = value; } } private string getSortDirection() { switch (GridSampleSortDirection) { case "ASC": GridSampleSortDirection = "DESC"; break; case "DESC": GridSampleSortDirection = "ASC"; break; } return GridSampleSortDirection; } protected void gridView_PageIndexChanging(object sender, GridViewPageEventArgs e) { gridSample.DataSource = sortDataView(gridSample.DataSource as DataView, true);
gridSample.PageIndex = e.NewPageIndex; gridSample.DataBind(); } protected DataView sortDataView(DataView dataView, bool isPageIndexChanging) { if (isPageIndexChanging) { dataView.Sort = string.Format("{0} {1}", GridSampleSortExpression, GridSampleSortDirection); } else { dataView.Sort = string.Format("{0} {1}", GridSampleSortExpression, getSortDirection()); } return dataView; } protected void gridView_Sorting(object sender, GridViewSortEventArgs e) { GridSampleSortExpression = e.SortExpression; int pageIndex = gridSample.PageIndex; gridSample.DataSource = sortDataView(gridSample.DataSource as DataView, false); gridSample.DataBind(); gridSample.PageIndex = pageIndex; } }
Publicado por Pablo Barrientos a las 20:03 2 comentarios
JUEVES 15 DE MARZO DE 2007
Las tareas de Paging y Sorting de forma simultanea en pginas ASP.NET presenta un pequeo cuidado; se debe mantener el ndice de la pgina en la que estamos cuando establecemos un nuevo criterio de ordenamiento. De la misma forma debemos mantener el criterio de ordenamiento al cambiar el ndice de la pgina a la que queremos acceder. El cdigo que sigue es un ejemplo o una de las formas, siempre hay mas de una forma :), de como se puede lograr esta tarea.- SortingPaging.aspx (nuestra pgina aspx)
<asp:GridView ID="gridSample" runat="server" AutoGenerateColumns="false" AllowPaging = "true" OnPageIndexChanging = "gridView_PageIndexChanging" PageSize = "5" AllowSorting = "true" OnSorting = "gridView_Sorting"> <Columns> <asp:BoundField HeaderText="Nombre" DataField="Nombre" SortExpression = "Nombre" /> <asp:BoundField HeaderText="Edad" DataField="edad" SortExpression = "edad" /> </Columns> </asp:GridView> - SortingPaging.aspx.cs (nuestro archivo de code behind) using System; using System.Data; using System.Web.UI; using System.Web.UI.WebControls; public partial class SortingPaging : Page { protected void Page_Load(object sender, EventArgs e) { DataSet ds = new DataSet(); // Aqui llenamos nuestro DataSet
DataView dv = ds.Tables[0].DefaultView; dv = sortDataView(dv, true); gridSample.DataSource = dv; gridSample.DataBind(); } private string GridSampleSortDirection { get { return ViewState["SortDirection"] as string ?? "ASC"; } set { ViewState["SortDirection"] = value; } } private string GridSampleSortExpression { get { return ViewState["SortExpression"] as string ?? "Nombre"; } set { ViewState["SortExpression"] = value; } } private string getSortDirection() { switch (GridSampleSortDirection) { case "ASC": GridSampleSortDirection = "DESC"; break; case "DESC": GridSampleSortDirection = "ASC"; break; } return GridSampleSortDirection; } protected void gridView_PageIndexChanging(object sender, GridViewPageEventArgs e) { gridSample.DataSource = sortDataView(gridSample.DataSource as DataView, true); gridSample.PageIndex = e.NewPageIndex;
gridSample.DataBind(); } protected DataView sortDataView(DataView dataView, bool isPageIndexChanging) { if (isPageIndexChanging) { dataView.Sort = string.Format("{0} {1}", GridSampleSortExpression, GridSampleSortDirection); } else { dataView.Sort = string.Format("{0} {1}", GridSampleSortExpression, getSortDirection()); } return dataView; } protected void gridView_Sorting(object sender, GridViewSortEventArgs e) { GridSampleSortExpression = e.SortExpression; int pageIndex = gridSample.PageIndex; gridSample.DataSource = sortDataView(gridSample.DataSource as DataView, false); gridSample.DataBind(); gridSample.PageIndex = pageIndex; } }
Publicado por Pablo Barrientos a las 19:57
JUEVES 1 DE MARZO DE 2007
usuario podemos agregar tooltips a estas cabeceras de una forma muy sencilla de modo de proveer al usuario el nombre completo o mas descriptivo para determinado campo mostrado. Pre-Requisitos: * Tenemos establecida la conexin a la base de datos. * Tenemos un DataSet con los datos para realizar el Binding al Dataview. * Tenemos los datos en el gridview a traves de Databind(). Elementos Clave: * Habilitar la propiedad HtmlEncode a false en cada campo enlazado. * Utilizar elementos HTML en la propiedad HeaderText. He aqu nuesto cdigo: - products.aspx (Nuestra pgina aspx)
<asp:gridview id="gvProducts" runat="server" autogeneratecolumns="false"> <Columns> <asp:BoundField HeaderText="Producto" DataField="name"/> <asp:BoundField HtmlEncode="false" HeaderText="<div title='Cantidad'> Cant. </div>" DataField="qty"/> <asp:BoundField HtmlEncode="false" HeaderText="<div title='Precio'> $ </div>" DataField="price"/> </Columns> </asp:gridview> Esta es solo una de las formas de realizarlo, otra forma es utilizando el tag <acronym> de HTML.