Posteado por: edeortuzar | 11/04/2014

Ordenar una grilla (ordenar una gridview)


Para ordenar un gridview hay que ponerle onda, es simple, pero hay que meter código.

Para empezar al gridview que queremos ordenar debemos agregarle la propiedad AllowSorting=”true” y luego especificar que el evento que vamos a llamar al hacer clic sobre la cabecera de la grilla para ordenarla , para esto declaramos la propiedad OnSorting=”grilla_Sorting”.

Luego debemos agregar la propiedad SortExpression a las columnas que querramos, indicando como valor el atributo del datasource por el cual queremos hacer el sort (ordenamiento).

<asp:GridView ID="grilla" runat="server" AutoGenerateColumns="False" 
                Width="100%" BackColor="#FAFAFA" 
                 AllowSorting="true" OnSorting="grilla_Sorting">
                <HeaderStyle BackColor="#84C67F" BorderColor="#84C67F" ForeColor="White"></HeaderStyle>
                <Columns>
                    <asp:BoundField DataField="id" HeaderText="Operación" SortExpression="id">
                        <ItemStyle HorizontalAlign="Center" />
                    </asp:BoundField>
                    <asp:BoundField DataField="RazonSocial" HeaderText="Razón Social" sortExpression="RazonSocial">
                        <ItemStyle HorizontalAlign="Center" />
                    </asp:BoundField>
                    <asp:BoundField DataField="Sucursal" HeaderText="Sucursal" SortExpression="Sucursal">
                        <ItemStyle HorizontalAlign="Center" />
                    </asp:BoundField>
                </Columns>
            </asp:GridView>

Luego en el codebehind debemos agregar lo siguiente:

protected void grilla_Sorting(object sender, GridViewSortEventArgs e)
        {
            try
            {
                DataView dtSortTable = (DataView)Session["listaGrilla"]; //Variable de sesión donde guardamos nuestro DataView

                if (dtSortTable != null)
                {
                    dtSortTable.Sort = e.SortExpression + " " + GetSortDirection(e.SortExpression);

                    Session["listaGrilla"] = dtSortTable;

                    cargarGrilla();
                }
            }
            catch (Exception ex)
            {
                mensajes.Text = "Ocurrio un error al realizar el ordenamiento de las columnas.";
            }
        }

private string GetSortDirection(string column)
        {

            // By default, set the sort direction to ascending.
            string sortDirection = "ASC";

            // Retrieve the last column that was sorted.
            string sortExpression = ViewState["SortExpression"] as string;

            if (sortExpression != null)
            {
                // Check if the same column is being sorted.
                // Otherwise, the default value can be returned.
                if (sortExpression == column)
                {
                    string lastDirection = ViewState["SortDirection"] as string;
                    if ((lastDirection != null) && (lastDirection == "ASC"))
                    {
                        sortDirection = "DESC";
                    }
                }
            }

            // Save new values in ViewState.
            ViewState["SortDirection"] = sortDirection;
            ViewState["SortExpression"] = column;

            return sortDirection;
        }

protected void cargarGrillaLeasingBienes()
        {
            try
            {
                grilla.DataSource = (DataView)Session["listaGrilla"];
                grilla.DataBind();
            }
            catch (Exception ex)
            {
                mensajes.Text = "Ocurrio un error al cargar los datos.";
            }
        }

Saludos.

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

Categorías

A %d blogueros les gusta esto: