none
Ordenar alfabeticamente valores de un gridview.

    Pregunta

  • Estimados, buenos días.

    Tengo un gridview que necesitaría que este ordenado alfabeticamente (por defecto). Y a su vez poder seleccionar una letra y que me dirija hasta ahí:

    Les muestro un ejemplo:

    Yo hasta el momento tengo el siguiente grid:

    <tr>
                    <td class="style4" colspan="3">
                        &nbsp; &nbsp;
                        <AjaxToolkit:ToolkitScriptManager ID="scriptManager" runat="server">
                        </AjaxToolkit:ToolkitScriptManager>
                        <asp:UpdatePanel ID="UpdatePanel1" runat="server">
                            <ContentTemplate>
                                <asp:GridView ID="GridView1" CssClass="color" runat="server" AllowPaging="True" BackColor="White"
                                    BorderColor="#CCCCCC" BorderStyle="None" BorderWidth="1px" CellPadding="3" OnSelectedIndexChanged="GridView1_SelectedIndexChanged"
                                    Width="100%" GridLines="None" OnPageIndexChanging="GridView1_PageIndexChanging"
                                    ShowFooter="True" PageSize="10" AutoGenerateColumns="False">
                                    <FooterStyle BackColor="#0099CC" ForeColor="#000066" />
                                    <HeaderStyle BackColor="#006699" Font-Bold="True" ForeColor="White" />
                                    <PagerStyle BackColor="White" ForeColor="#000066" HorizontalAlign="Center" />
                                    <RowStyle ForeColor="#000066" />
                                    <SelectedRowStyle BackColor="#669999" Font-Bold="True" ForeColor="White" />
                                    <SortedAscendingCellStyle BackColor="#F1F1F1" />
                                    <SortedAscendingHeaderStyle BackColor="#007DBB" />
                                    <SortedDescendingCellStyle BackColor="#CAC9C9" />
                                    <SortedDescendingHeaderStyle BackColor="#00547E" />
                                    <Columns>
                                        <asp:TemplateField HeaderText="Título" ItemStyle-Width="160px">
                                            <ItemTemplate>
                                                <asp:Label ID="lblNombre" runat="server" Text='<%# Eval("Nombre") %>' />
                                            </ItemTemplate>
                                            <ItemStyle Width="150px"></ItemStyle>
                                        </asp:TemplateField>
                                        <asp:TemplateField HeaderText="Autor" ItemStyle-Width="90px">
                                            <ItemTemplate>
                                                <asp:Label ID="lblAutor" runat="server" Text='<%# Eval("Autor") %>' />
                                            </ItemTemplate>
                                            <ItemStyle Width="150px"></ItemStyle>
                                        </asp:TemplateField>
                                        <asp:TemplateField HeaderText="Editorial" ItemStyle-Width="90px">
                                            <ItemTemplate>
                                                <asp:Label ID="lblEditorial" runat="server" Text='<%# Eval("Editorial") %>' />
                                            </ItemTemplate>
                                            <ItemStyle Width="150px"></ItemStyle>
                                        </asp:TemplateField>
                                        <asp:TemplateField HeaderText="Categoría" ItemStyle-Width="90px">
                                            <ItemTemplate>
                                                <asp:Label ID="lblCategoria" runat="server" Text='<%# Eval("Categoría") %>' />
                                            </ItemTemplate>
                                            <ItemStyle Width="100px"></ItemStyle>
                                        </asp:TemplateField>
                                        <asp:TemplateField HeaderText="Estado" ItemStyle-Width="90px">
                                            <ItemTemplate>
                                                <asp:Label ID="lblEstado" runat="server" Text='<%# Eval("Estado") %>' />
                                            </ItemTemplate>
                                            <ItemStyle Width="80px"></ItemStyle>
                                        </asp:TemplateField>
                                        <asp:TemplateField HeaderText="Precio" ItemStyle-Width="90px">
                                            <ItemTemplate>
                                                <asp:Label ID="lblPrecio" runat="server" Text='<%# Eval("Precio") %>' />
                                            </ItemTemplate>
                                            <ItemStyle Width="20px"></ItemStyle>
                                        </asp:TemplateField>
                                        <asp:TemplateField HeaderText="Imagen" ItemStyle-Width="90px">
                                            <ItemTemplate>
                                                <asp:Image ID="Image1" runat="server" ImageUrl='<%# Eval("Foto").ToString() %>' Height="65px"
                                                    Width="55px" />
                                            </ItemTemplate>
                                            <ItemStyle Width="100px"></ItemStyle>
                                        </asp:TemplateField>
                                        <asp:TemplateField HeaderText="Descripción" ItemStyle-Width="90px">
                                            <ItemTemplate>
                                                <asp:ImageButton ID="imgDescripcion" CommandArgument='<%# Eval("IdLibro") %>' type='button'
                                                    class='basic' value='Demo' src="imagenes/Iconos/lupa.jpg" Style="height: 30px;
                                                    width: 30px;" runat="server" OnClick="imgDescripcion_Click" />
                                            </ItemTemplate>
                                            <ItemStyle Width="20px"></ItemStyle>
                                        </asp:TemplateField>
                                    </Columns>
                                </asp:GridView>
                            </ContentTemplate>
                        </asp:UpdatePanel>
                        &nbsp;
                    </td>
                </tr>

     // Instanciar ProductoBL
        Filtro p = new Filtro();
        protected void Page_Load(object sender, EventArgs e)
        {
            // Si la pagina no ha ido al servidor
            if (!IsPostBack)
            {
                // Listar
                GridView1.DataSource = p.listado();
                GridView1.DataBind();
            }
    
            //string buscar = Request.QueryString["buscar"];
            //TxtNombre.Text = buscar;
        }
        
        protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
        {
    
        }
        protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            GridView1.PageIndex = e.NewPageIndex;
            GridView1.DataSource = p.listado();
            GridView1.DataBind();
        }
        protected void BtnBuscarNom_Click(object sender, EventArgs e)
        {
            // Filtrar
            GridView1.DataSource = p.filtro(TxtNombre.Text);
            GridView1.DataBind();
        }
    
        protected void BtnBuscar2_Click1(object sender, EventArgs e)
        {
            // Filtrar
            GridView1.DataSource = p.filtro2(TxtApellido.Text);
            GridView1.DataBind();
        }
        protected void BtnBuscarArea_Click(object sender, EventArgs e)
        {
            // Filtrar
            GridView1.DataSource = p.filtro3(TxtArea.Text);
            GridView1.DataBind();
        }
        protected void BtnCancelar_Click(object sender, EventArgs e)
        {
            Response.Redirect("Catalogo.aspx");
        }

    Gracias por su tiempo, espero que me puedan ayudar.

    Saludos.

    lunes, 21 de octubre de 2013 15:01

Todas las respuestas

  • hola

    para ordenarlo por defecto en la query podrias usar

    SELECT * FROM Tabla ORDER BY Campo

    despues para filtrar segun la letra seleccionada aplicarias un filtro

    DataTable dt = new DataTable();  
    using (SqlConnection conn = new SqlConnection("connection string"))  
    {  
    
        string query = "select * from <tabla> WHERE nombrecampo LIKE @letra+ '%'";  
    
        SqlCommand cmd = new SqlCommand(query, conn);  
        cmd.Parameters.AddWithValue("@letra", valor);  
    
        SqlDataAdapter da = new SqlDataAdapter(cmd);    
        da.Fill(dt);  
    
    }
    

    o sea con el like podrias filtrar que empiece con la letra que se selecciona

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    lunes, 21 de octubre de 2013 15:06
  • Gracias Leandro y para mostrar graficamente en el grid el abecedario como lo puedo hacer??

    lunes, 21 de octubre de 2013 15:48
  • Hola amigo, observa este ejemplo, implementan el paginador alfabetico tal como lo necesitas, usan un repeater para lograrlo:

    http://aspsnippets.com/Articles/Alphabet-Paging-using-Alphabetical-Pager-in-ASPNet-GridView.aspx

    espero te sirva, saludos!!


    El Tavo Mi Blog

    lunes, 21 de octubre de 2013 16:21