none
WebGrid + Ajax RRS feed

  • Pergunta

  • Boa tarde.

    Estou com o seguinte problema na minha aplicação.

    Cenário : Tenho uma view onde exibo os dados do usuario de origem, em um outro fieldset exibo os dados de destino.

    Nesta view tem um textbox e um botão para consultar usuarios no AD. Queria alimetar um webgrid através desta consulta, mas esta dando problemas.

    Segue código:

    //controller
    [AcceptVerbs(HttpVerbs.Post)]
            public object UpdateForm(string textBox1)
            {
                var colaborador = from c in _repositorioListagemUsuariosAD.RetornaUsuariosADPorRegional("Juliana")
                                  select new Models.InfoActiveDirectory.Index
                                  {
                                      Displayname = c.Nome,
                                      Department = c.Departamento,
                                      Mail = c.Email
                                  };
    
                List<Models.InfoActiveDirectory.Index> lista = new List<Models.InfoActiveDirectory.Index>();
                lista = (from c in colaborador.AsEnumerable()
                         select new Models.InfoActiveDirectory.Index
                         {
                             Displayname = c.Displayname,
                             Department = c.Department,
                             Mail = c.Mail
                         }).ToList();
    
                ViewBag.pesquisaUsuarios = lista;
    
                return lista;
            }

    Nesta parte de cima, ele retorna os dados.

    //view
    @using (Ajax.BeginForm("UpdateForm", new AjaxOptions { InsertionMode = InsertionMode.Replace, UpdateTargetId = "grid" }))
    ...
    
        @{        
       
        var grid = new WebGrid(source: @ViewBag.pesquisaUsuarios,
    
                 defaultSort: "Id",
                 rowsPerPage: 5,
                 canPage: true,
                 canSort: false,
                 fieldNamePrefix: "gridItens_",
                 pageFieldName: "inside",
                 selectionFieldName: "selectedRow");
    }
    ...
            <div>@Html.TextBox("textBox1", "", new { style = "width: 400px;" })</div>
    
            <input type="submit" value="Submit"/><br />
    ...
           <div id="grid">
                <br />
    
                @grid.GetHtml(                                
                    tableStyle: "webgrid",
                    headerStyle: "webgrid-header",
                    footerStyle: "webgrid-footer",
                    alternatingRowStyle: "webgrid-alternating-row",
                    selectedRowStyle: "webgrid-selected-row",                            
                    rowStyle: "webgrid-row-style",                
                    mode: WebGridPagerModes.FirstLast | WebGridPagerModes.NextPrevious,
                    firstText: MyResourceApp.GridFirstText,
                    previousText: MyResourceApp.GridPreviousText,
                    nextText: MyResourceApp.GridNextText,
                    lastText: MyResourceApp.GridLastText,
    
                    columns: grid.Columns(
                     grid.Column(MyResourceUsuario.ColumnNome, MyResourceUsuario.ColumnNome),
                     grid.Column(MyResourceUsuario.ColumnDepartamento, MyResourceUsuario.ColumnDepartamento),
                     grid.Column(MyResourceUsuario.ColumnEmail, MyResourceUsuario.ColumnEmail)
    
                        //grid.Column(header: "", style: "text-align-center", format: (item) => new HtmlString(@Html.ActionLink(" ", "Details", new { id = item.Id }, new { @class = "view-item-link", @title = "Visualizar Item" }).ToString())),
                        //grid.Column(header: "", style: "text-align-center", format: (item) => item.Status == 2 ? Html.ActionLink(" ", "Edit", new { id = item.Id }, new { @class = "edit-item-link", @title = "Editar Item" }) : Html.ActionLink(" ", "", new { }, new { @class = "edit-alpha-item-link", @title = "Editar" })),
                        //grid.Column(header: "", style: "text-align-center", format: (item) => item.Status == 2 ? Html.ActionLink(" ", "Delete", new { id = item.Id }, new { @class = "cancel-item-link", @title = "Cancelar Item" }) : Html.ActionLink(" ", "", new { }, new { @class = "cancel-aplha-item-link", @title = "Cancelar" })),
                        //grid.Column(header: "", style: "text-align-center", format: (item) => new HtmlString(@Html.ActionLink(" ", "Historic", new { id = item.Id }, new { @class = "historico-item-link", @title = "Histórico Item" }).ToString()))
                                )
                            )
            </div>

    Aparece assim no firebug na resposta:

    System.Collections.Generic.List`1[Models.InfoActiveDirectory.Index]

    Como eu vinculo estes dados ao meu webgrid?

    Obrigado pela ajuda de todos.


    Consultoria .NET
    ANALISTA DESENVOLVEDOR
    Se esta sugestão for útil, por favor, classifique-a como útil.
    Se ela lhe ajudar a resolver o problema, por favor, marque-a como resposta.
    Blog .Net Descomplicado


    terça-feira, 10 de abril de 2012 17:55