none
MVC Web.grid RRS feed

  • Pergunta

  • Estou tentando fazer a ordenação no meu web.grid ao clicar na coluna , mas não estou conseguindo.

    Segue o codigo abaixo:

    @model IEnumerable<Lambda.Models.Cd_Funcionario>
    @{
        ViewBag.Title = "Funcionario";




        var grid = new WebGrid(Model, canSort: true, canPage: true, rowsPerPage: 5, defaultSort: "cd_funcionario1", sortDirectionFieldName: "DESC"
            );

        @grid.GetHtml(mode: WebGridPagerModes.All,
        columns: grid.Columns(
            grid.Column("cd_funcionario1", "Codigo", canSort: true),
            grid.Column("ds_funcionario", "funcionario", canSort: true),
            grid.Column("cd_status", "status", canSort: true),
            grid.Column(format: (item) => Html.ActionLink("Edit", "EditarFuncionario", new { id = item.cd_funcionario1 })),
            grid.Column(format: (item) => Html.ActionLink("Details", "Details", new { id = item.ds_funcionario })),
            grid.Column(format: (item) => Html.ActionLink("Delete", "Delete", new { id = item.cd_status }))
            )
        )
            
    }


    • Editado _Manigold_ quinta-feira, 24 de outubro de 2013 13:45
    quinta-feira, 24 de outubro de 2013 13:44

Todas as Respostas

  • Tira isso da configuração do Grid sortDirectionFieldName: "DESC" porque pelo visto ta ficando como padrão!

    Fúlvio Cezar Canducci Dias

    quinta-feira, 24 de outubro de 2013 14:33
  • Olá amigo, fiz , mas infelizmente não funcionou.

    var grid = new WebGrid(Model, canSort: true, canPage: true, rowsPerPage: 5, defaultSort: "cd_funcionario1"
            );

        @grid.GetHtml(mode: WebGridPagerModes.All,
        columns: grid.Columns(
            grid.Column("cd_funcionario1", "Codigo", canSort: true),
            grid.Column("ds_funcionario", "funcionario", canSort: true),
            grid.Column("cd_status", "status", canSort: true),
            grid.Column(format: (item) => Html.ActionLink("Edit", "EditarFuncionario", new { id = item.cd_funcionario1 })),
            grid.Column(format: (item) => Html.ActionLink("Details", "Details", new { id = item.ds_funcionario })),
            grid.Column(format: (item) => Html.ActionLink("Delete", "Delete", new { id = item.cd_status }))
            )
        )

    muito obrigado.

    quinta-feira, 24 de outubro de 2013 15:21
  • Assim vai:

    @{
    // rotina que foi adicionado String SortField = "Id"; if (Request["Sort"] != null){ SortField = Request["Sort"].ToString(); } // ele vai pegar o campo que ficar no defaultSort como padrão ai rola

    WebGrid Grid = new WebGrid(Model, rowsPerPage: 5, canPage: true, canSort: true, defaultSort: SortField, columnNames: new string[] { "Id, Descricao, Data, Valor, Status" }); } @Grid.GetHtml(mode: WebGridPagerModes.All, columns: Grid.Columns( Grid.Column(columnName: "Id", header: "Id", canSort:true), Grid.Column(columnName: "Descricao", header: "Descrição", canSort:true), Grid.Column(columnName: "Data", header: "Data", canSort: true), Grid.Column(columnName: "Valor", header: "Valor", canSort: true), Grid.Column(columnName: "Status", header: "Status", canSort: true) ))


    Bom eu resolvi dessas forma passando e pegando por paramentro via Get o campo que foi selecionado para ordenação siga as mesmas intruções no seu caso eu vou fazer e se testa ai

    Coloquei na sua:

    String SortField  = "cd_funcionario1"; // campo padrão quando carrega na primeira vez
    if (Request["Sort"] != null){
    	SortField = Request["Sort"].ToString();
    } 
    		
    var grid = new WebGrid(Model, canSort: true, canPage: true, rowsPerPage: 5, defaultSort: SortField);
    
    @grid.GetHtml(mode: WebGridPagerModes.All,
    columns: grid.Columns(
    	grid.Column("cd_funcionario1", "Codigo", canSort: true),
    	grid.Column("ds_funcionario", "funcionario", canSort: true),
    	grid.Column("cd_status", "status", canSort: true),
    	grid.Column(format: (item) => Html.ActionLink("Edit", "EditarFuncionario", new { id = item.cd_funcionario1 })),
    	grid.Column(format: (item) => Html.ActionLink("Details", "Details", new { id = item.ds_funcionario })),
    	grid.Column(format: (item) => Html.ActionLink("Delete", "Delete", new { id = item.cd_status }))
    	)
    )	


    Fúlvio Cezar Canducci Dias

    quinta-feira, 24 de outubro de 2013 18:44
  • ola Fúlvio , fiz exatamente como pediu  , mas continua nao funcionando:

    segue o codigo abaixo:

            

    @model IEnumerable<Lambda.Models.Cd_Funcionario>
    @{
        // rotina que foi adicionado
        String SortField = "cd_funcionario1";
        if (Request["Sort"] != null)
        {
            SortField = Request["Sort"].ToString();
        } // ele vai pegar o campo que ficar no defaultSort como padrão ai rola

        WebGrid Grid = new WebGrid(Model,
            rowsPerPage: 5,
            canPage: true,
            canSort: true,
            defaultSort: SortField,
            columnNames: new string[] { "codigo, funcionario, cargo, status" });


    }
    @Grid.GetHtml(mode: WebGridPagerModes.All,
            columns: Grid.Columns(
            Grid.Column(columnName: "cd_funcionario1", header: "codigo", canSort: true),
            Grid.Column(columnName: "ds_funcionario", header: "funcionario", canSort: true),
            Grid.Column(columnName: "ds_cargo", header: "cargo", canSort: true),
            Grid.Column(columnName: "cd_status", header: "status", canSort: true)

            ))

    Muito obrigado.

    quinta-feira, 24 de outubro de 2013 18:56
  • ola Fúlvio , fiz exatamente como pediu  , mas continua nao funcionando:

    segue o codigo abaixo:

            

    @model IEnumerable<Lambda.Models.Cd_Funcionario>
    @{
        // rotina que foi adicionado
        String SortField = "cd_funcionario1";
        if (Request["Sort"] != null)
        {
            SortField = Request["Sort"].ToString();
        } // ele vai pegar o campo que ficar no defaultSort como padrão ai rola

        WebGrid Grid = new WebGrid(Model,
            rowsPerPage: 5,
            canPage: true,
            canSort: true,
            defaultSort: SortField,
            columnNames: new string[] { "codigo, funcionario, cargo, status" });


    }
    @Grid.GetHtml(mode: WebGridPagerModes.All,
            columns: Grid.Columns(
            Grid.Column(columnName: "cd_funcionario1", header: "codigo", canSort: true),
            Grid.Column(columnName: "ds_funcionario", header: "funcionario", canSort: true),
            Grid.Column(columnName: "ds_cargo", header: "cargo", canSort: true),
            Grid.Column(columnName: "cd_status", header: "status", canSort: true)

            ))

    Muito obrigado.

    Se fez errado!

    Assim Observação coloca Request["Sort"] para Request["sort"] tanto no if quando na atribuição

    e se não der certo me passa também o código do seu metodo que gera essa view!!!

    Ta certo o que eu te passei é alguma coisa ai!


    Fúlvio Cezar Canducci Dias

    quinta-feira, 24 de outubro de 2013 19:22
  • Se ta usando Ajax ?

    Fúlvio Cezar Canducci Dias

    quinta-feira, 24 de outubro de 2013 19:24
  • olá , não estou usando.

    obrigado.

    quinta-feira, 24 de outubro de 2013 19:33
  • segue :

      public ActionResult Funcionario()
            {
                using (catracapetrolinaEntities bd = new catracapetrolinaEntities())
                {
                    var query = (bd.Cd_Funcionario).ToList();
                    
                    return View(query);
                }

                
            }

    quinta-feira, 24 de outubro de 2013 19:36
  • Coloca um BreakPoint e teste o Código ?

    nessa linha:  if (Request["Sort"] != null)


    Fúlvio Cezar Canducci Dias

    quinta-feira, 24 de outubro de 2013 19:50
  • Ao clicar na coluna para ordenar, acontece na imagem abaixo:

    quinta-feira, 24 de outubro de 2013 19:54
  • Ao clicar na coluna para ordenar, acontece na imagem abaixo:

    Então qual valor ta indo ??

    Fúlvio Cezar Canducci Dias

    quinta-feira, 24 de outubro de 2013 19:55
  • quinta-feira, 24 de outubro de 2013 19:58
  • mas nada acontece.

    obrigado.

    quinta-feira, 24 de outubro de 2013 19:58
  • Ai você clica na outra coluna e ve se quando passar ai ele carrega a informação da outra coluna!

    Fúlvio Cezar Canducci Dias

    quinta-feira, 24 de outubro de 2013 21:50
  • Estou com problema com gridweb.

    Compiler Error Message: CS1738: Named argument specifications must appear after all fixed arguments have been specified

    meu modelo

    public class CaracteristicaSistemaModel
        {
            public int Codigo { get; set; }
            public string CaracteristicaNome { get; set; }
            public int TipoSistema { get; set; }

            public static List<CaracteristicaSistemaModel> Get()
            {
                List<CaracteristicaSistemaModel> lista = new List<CaracteristicaSistemaModel>();

                lista.Add(new CaracteristicaSistemaModel { Codigo = 1, CaracteristicaNome = "Testando sistema", TipoSistema = 1 });
                lista.Add(new CaracteristicaSistemaModel { Codigo = 2, CaracteristicaNome = "Testando sistema", TipoSistema = 2 });
                lista.Add(new CaracteristicaSistemaModel { Codigo = 3, CaracteristicaNome = "Testando sistema", TipoSistema = 45 });
                lista.Add(new CaracteristicaSistemaModel { Codigo = 4, CaracteristicaNome = "Testando sistema", TipoSistema = 55 });

                return lista;
            }
        }

            

    @{
            WebGrid grid = new WebGrid(source: Model);

        }

    na view

        @grid.GetHtml(mode: WebGridPagerModes.All, columns: grid.Column(columnName: "Codigo", header: "Código"), grid.Column(columnName: "CaracteristicaNome", header: "Característica", format: @<text>@item.CaracteristicaNome</text> ), grid.Column(columnName: "TipoSistema", header: "Tipo de Sistema"));

    e no controllers

    public ActionResult CaracteristicaSistema()
            {
                IEnumerable<CaracteristicaSistemaModel> model = CaracteristicaSistemaModel.Get();
                return View(model);
            }


    Marcelo Gomes


    quinta-feira, 12 de março de 2015 03:15