none
Como usar o Sorting no GridView RRS feed

  • Pergunta

  • Olá pessoal, 

    Alguém pode me ajudar com o uso do sorting no grid view em um exemplo bem simples sou iniciante. Já li a maioria dos post, mas não consegui fazer funcionar. 

    OBS: Preciso fazer o sorting em qualquer coluna

    Parte do meu grid resumido

                        <asp:GridView ID="grdImportacao" runat="server" AutoGenerateColumns="False"
                            
            DataKeyNames="codigoacao,descricaoTipoAcao,numeroProcesso" 
            AllowPaging="True" AllowSorting="True"
            style="margin-bottom10px;" 
            onpageindexchanging="grdImportacao_PageIndexChanging" 
          
            onrowcommand="grdImportacao_RowCommand" 
            onrowupdated="grdImportacao_RowUpdated">
           
                            <Columns>
                            <asp:TemplateField HeaderText="Nº"  >
                            <ItemTemplate>    <%#Eval("codigoacao"%>    </ItemTemplate>
                             <EditItemTemplate>
                                    <asp:TextBox ID="txtcodigoacao" runat="server"  Text='<%#Eval("codigoacao") %>'></asp:TextBox>
                                    </EditItemTemplate>
                            </asp:TemplateField>
     
                            <asp:TemplateField HeaderText="TIPO DE AÇÃO" >
                            <ItemTemplate>    <%#Eval("descricaoTipoAcao")%>    </ItemTemplate>
                            </asp:TemplateField>    
     
                            <asp:TemplateField HeaderText="PROCESSO Nº" >
                            <ItemTemplate>    <%#Eval("numeroProcesso")%>    </ItemTemplate>
                            </asp:TemplateField>    
                             <ControlStyle Width="200px" />
                            </asp:TemplateField>
     			</Columns>
                        </asp:GridView>

    Parte do aspx resumido

    Quando eu clico no botao consultar ele carrega o grid usando databind 

    grdImportacao.DataSource = Web.ConsultaAcaoJuridica(ObjAcaoJudicial);

    grdImportacao.DataBind(); 

    agradeço desde já

     

    quinta-feira, 28 de março de 2013 13:25

Respostas

  • Cara,

    Segue feito em linq, apenas precisa passar como parametro um DataTable, o nome da coluna que deseja e tem a opção de escolher entra asc e desc:

        public static class SourceOrder
        {
            public static DataTable OrdenaDataTableLinq(DataTable dtRetorno, string strColuna, bool blDesc = false)
            {
                if (dtRetorno.Rows.Count > 0)
                {
                    if (blDesc.Equals(false))
                    {
                        IEnumerable<DataRow> query =
                             (from order in dtRetorno.AsEnumerable()
                              orderby order.Field<object>(strColuna) ascending
                              select order);
    
                        if (query.Count() > 0)
                        {
                            dtRetorno = query.CopyToDataTable<DataRow>();
                        }
                    }
                    else
                    {
                        IEnumerable<DataRow> query =
                             (from order in dtRetorno.AsEnumerable()
                              orderby order.Field<object>(strColuna) descending
                              select order);
    
                        if (query.Count() > 0)
                        {
                            dtRetorno = query.CopyToDataTable<DataRow>();
                        }
                    }
                }
    
                return dtRetorno;
            }
        }


    Atenciosamente, Samuel dos Anjos

    quinta-feira, 28 de março de 2013 23:00

Todas as Respostas

  • Cara,

    Posta o que tentou fazer


    Atenciosamente, Samuel dos Anjos

    quinta-feira, 28 de março de 2013 19:04
  • "Samuel",

    Preciso de um exemplo simples do uso do sorting no grid view, apenas informei acima que listei no grid a consulta , mas agora preciso fazer a parte do sorting asc e desc.  

    Agradeço atenção


    quinta-feira, 28 de março de 2013 19:43
  • Veja se este post ajuda.
    quinta-feira, 28 de março de 2013 21:42
  • Cara,

    Segue feito em linq, apenas precisa passar como parametro um DataTable, o nome da coluna que deseja e tem a opção de escolher entra asc e desc:

        public static class SourceOrder
        {
            public static DataTable OrdenaDataTableLinq(DataTable dtRetorno, string strColuna, bool blDesc = false)
            {
                if (dtRetorno.Rows.Count > 0)
                {
                    if (blDesc.Equals(false))
                    {
                        IEnumerable<DataRow> query =
                             (from order in dtRetorno.AsEnumerable()
                              orderby order.Field<object>(strColuna) ascending
                              select order);
    
                        if (query.Count() > 0)
                        {
                            dtRetorno = query.CopyToDataTable<DataRow>();
                        }
                    }
                    else
                    {
                        IEnumerable<DataRow> query =
                             (from order in dtRetorno.AsEnumerable()
                              orderby order.Field<object>(strColuna) descending
                              select order);
    
                        if (query.Count() > 0)
                        {
                            dtRetorno = query.CopyToDataTable<DataRow>();
                        }
                    }
                }
    
                return dtRetorno;
            }
        }


    Atenciosamente, Samuel dos Anjos

    quinta-feira, 28 de março de 2013 23:00
  • Eu estou utilizando um data source para carregar o grid como eu faço para carregar jogar o que eu carreguei no grid em datatable para poder usar a função, é possível?

    grdImportacao.DataSource = Web.ConsultaAcaoJuridica(ObjAcaoJudicial);

    grdImportacao.DataBind(); 

    segunda-feira, 1 de abril de 2013 14:34
  • Qual é o retorno de Web.ConsultaAcaoJuridica(ObjAcaoJudicial) ?

    Se for um DataTable, pode chamar a função da seguinte forma:

    grdImportacao.DataSource = OrdenaDataTableLinq(Web.ConsultaAcaoJuridica(ObjAcaoJudicial), "NOME");
    
    grdImportacao.DataBind(); 



    Atenciosamente, Samuel dos Anjos

    segunda-feira, 1 de abril de 2013 20:35
  • Veja um ex

    http://stackoverflow.com/questions/7316597/sorting-a-gridview-using-datatable


    Não esqueça de usar o componente </> na barra para posta seu código. Microsoft MCPD,MCTS,MCC

    terça-feira, 2 de abril de 2013 10:43
    Moderador
  • Se você é INICIANTE mesmo, então não defina o DataSource pelo CodeBehind. Como aparentemente está usando uma classe para retornar os dados que alimentam seu GridView, use um controle ObjectDataSource.

    Rafael Santos

    Observações:
    1. Selecione a opção "Habilitar o Live Alerts por Padrão" nas suas configurações para que possa acompanhar em tempo real as atividades relacionadas a sua Thread;
    2. Não abandone sua Thread. Ao perguntar, fique atento às respostas; ao encontrar uma solução, compartilhe;
    3. As pessoas que dedicam seu tempo na busca por soluções para você não ganham nada em troca. Valorize-as e em forma de agradecimento pontue as respostas corretas.

    "Quem disse que não escrevo poesias? A diferença é que as minhas começam com using System;"

    terça-feira, 2 de abril de 2013 12:52