none
Lista de Produtos com erro de Evento RRS feed

  • Pergunta

  •   Bom dia, amigos.

     Tenho uma classe nota de saída, e utilizo datatables para listar produtos. Disparo o evento pelo tipo de produto, ex.: Tipo de saída Venda, deverá apresentar produtos do tipo venda...

    Como tenho que adicionar o produto na nota, criei 2 tabelas, sendo a primeira com mais detalhes (para pesquisar), e a segunda lista(que deverá manter os produtos adicionados) mais simples. Filtro utilizado:

    public dynamic FiltraGridProduto(string item)
            {
                Session["ListaProdutos"] = null;
                Session["ListaProdutosAdicionados"] = null;
                Session["ListaProdutos"] = new List<SGBLE.Models.produto>();
                Session["ListaProdutosAdicionados"] = new List<SGBLE.Models.produto>();
                List<produto> produtos = Session["ListaProdutos"] as List<produto>;
                List<produto> produtosAdd = Session["ListaProdutosAdicionados"] as List<produto>;
    
                produtos = db.produto.Where(x => x.tipo_servico.Equals(item)).ToList();
    
                var result = new
                {
                    ViewGridProduto = RenderPartialViewToString("_gridProdutos", produtos),
                    ViewGridProdutoAdd = RenderPartialViewToString("_gridProdutosAdicionados", produtosAdd)
                };
    
                return Json(result, JsonRequestBehavior.AllowGet);
            }

    Para lista de produtos, utilizo o seguinte código:

    @model IEnumerable<SGBLE.Models.produto>
    
    <table class="dataTables">
        <thead>
            <tr>
                <th>
                    @Html.DisplayNameFor(model => model.codigo)
                </th>
                <th>
                    @Html.DisplayNameFor(model => model.descricao)
                </th>
                <th>
                    @Html.DisplayNameFor(model => model.codigo_ean)
                </th>
                <th></th>
            </tr>
         </thead>
        <tbody>
            @foreach (var item in Model)
            {
                <tr>
                    <td>
                        @Html.DisplayFor(modelItem => item.codigo)
                    </td>
                    <td>
                        @Html.DisplayFor(modelItem => item.descricao)
                    </td>
                    <td>
                        @Html.DisplayFor(modelItem => item.codigo_ean)
                    </td>
                    <td>
                        <button type="button" class="btn btn-xs btn-success" id="addProduto" value="@item.id" onclick="AddProduto(this)">Adicionar</button>
                        @*@Ajax.ActionLink("Adicionar", "AdicionarProduto", new { Id = item.id }, new AjaxOptions
                       {
                           HttpMethod = "POST",
                           InsertionMode = InsertionMode.Replace,
                           UpdateTargetId = "ListaProdutos",
                           OnSuccess = "DataTablesFactory();"
                       }, new { @class = "btn btn-xs btn-success" })*@
                    </td>
                </tr>
            }
        <tbody>
    </table>
    


    Para a lista de produtos pertencentes a nota, utilizo:

    @model IEnumerable<SGBLE.Models.produto>
    
    <table class="dataTables">
        
            <tr>
                <th>
                    @Html.DisplayNameFor(model => model.codigo)
                </th>
                <th>
                    @Html.DisplayNameFor(model => model.descricao)
                </th>
                <th>
                    @Html.DisplayNameFor(model => model.codigo_ean)
                </th>
                <th></th>
            </tr>
        
        <tbody>
            @foreach (var item in Model)
            {
                <tr>
                    <td>
                        @Html.DisplayFor(modelItem => item.codigo)
                    </td>
                    <td>
                        @Html.DisplayFor(modelItem => item.descricao)
                    </td>
                    <td>
                        @Html.DisplayFor(modelItem => item.codigo_ean)
                    </td>
                    <td>
                        <button type="button" class="btn btn-xs btn-danger" id="removerProduto" value="@item.id" onclick="RemoverProduto(this)">Remover</button>
                        @*@Ajax.ActionLink("Remover", "ItemNotaSaida/Delete", new { Id = item.id }, new AjaxOptions
                       {
                           HttpMethod = "POST",
                           InsertionMode = InsertionMode.Replace,
                           UpdateTargetId = "gridProduto",
                           OnSuccess = "DataTablesFactory();"
                       }, new { @class = "btn btn-xs btn-warning" })*@
                    </td>
                </tr>
            }
        </tbody>
    </table>
    


     Ai vem o erro, o evento não dispara, ao analisar, verifiquei que o erro vem do jquery.datatables.js

    Ao incluir <thead>, na segunda lista(produtos adicionados), o Evento funciona normalmente, entretando, é apresentado as opções de pesquisas, observe:

    Alguém já passou por esse problema?

     
    sexta-feira, 5 de junho de 2015 13:24

Respostas

  • Olá, Tiago. Tudo bem?

    Amigo, não entendi bem qual é o evento que não é disparado. Poderia explicar melhor?

    Abraço.


    Joel Rodrigues MSP, MCP, MTA Editor geral .NET Magazine E Easy .NET Magazine

    • Sugerido como Resposta Matheus L. M. C. Campos terça-feira, 16 de junho de 2015 21:18
    • Não Sugerido como Resposta Marcos SJ sexta-feira, 15 de janeiro de 2016 17:06
    • Marcado como Resposta Marcos SJ quinta-feira, 11 de fevereiro de 2016 18:48
    domingo, 7 de junho de 2015 23:54

Todas as Respostas

  •   Bom dia, amigos.

     Tenho uma classe nota de saída, e utilizo datatables para listar produtos. Disparo o evento pelo tipo de produto, ex.: Tipo de saída Venda, deverá apresentar produtos do tipo venda...

    Como tenho que adicionar o produto na nota, criei 2 tabelas, sendo a primeira com mais detalhes (para pesquisar), e a segunda lista(que deverá manter os produtos adicionados) mais simples. Filtro utilizado:

    public dynamic FiltraGridProduto(string item)
            {
                Session["ListaProdutos"] = null;
                Session["ListaProdutosAdicionados"] = null;
                Session["ListaProdutos"] = new List<SGBLE.Models.produto>();
                Session["ListaProdutosAdicionados"] = new List<SGBLE.Models.produto>();
                List<produto> produtos = Session["ListaProdutos"] as List<produto>;
                List<produto> produtosAdd = Session["ListaProdutosAdicionados"] as List<produto>;
    
                produtos = db.produto.Where(x => x.tipo_servico.Equals(item)).ToList();
    
                var result = new
                {
                    ViewGridProduto = RenderPartialViewToString("_gridProdutos", produtos),
                    ViewGridProdutoAdd = RenderPartialViewToString("_gridProdutosAdicionados", produtosAdd)
                };
    
                return Json(result, JsonRequestBehavior.AllowGet);
            }

    Para lista de produtos, utilizo o seguinte código:

    @model IEnumerable<SGBLE.Models.produto>
    
    <table class="dataTables">
        <thead>
            <tr>
                <th>
                    @Html.DisplayNameFor(model => model.codigo)
                </th>
                <th>
                    @Html.DisplayNameFor(model => model.descricao)
                </th>
                <th>
                    @Html.DisplayNameFor(model => model.codigo_ean)
                </th>
                <th></th>
            </tr>
         </thead>
        <tbody>
            @foreach (var item in Model)
            {
                <tr>
                    <td>
                        @Html.DisplayFor(modelItem => item.codigo)
                    </td>
                    <td>
                        @Html.DisplayFor(modelItem => item.descricao)
                    </td>
                    <td>
                        @Html.DisplayFor(modelItem => item.codigo_ean)
                    </td>
                    <td>
                        <button type="button" class="btn btn-xs btn-success" id="addProduto" value="@item.id" onclick="AddProduto(this)">Adicionar</button>
                        @*@Ajax.ActionLink("Adicionar", "AdicionarProduto", new { Id = item.id }, new AjaxOptions
                       {
                           HttpMethod = "POST",
                           InsertionMode = InsertionMode.Replace,
                           UpdateTargetId = "ListaProdutos",
                           OnSuccess = "DataTablesFactory();"
                       }, new { @class = "btn btn-xs btn-success" })*@
                    </td>
                </tr>
            }
        <tbody>
    </table>


    Para a lista de produtos pertencentes a nota, utilizo:

    @model IEnumerable<SGBLE.Models.produto>
    
    <table class="dataTables">
        
            <tr>
                <th>
                    @Html.DisplayNameFor(model => model.codigo)
                </th>
                <th>
                    @Html.DisplayNameFor(model => model.descricao)
                </th>
                <th>
                    @Html.DisplayNameFor(model => model.codigo_ean)
                </th>
                <th></th>
            </tr>
        
        <tbody>
            @foreach (var item in Model)
            {
                <tr>
                    <td>
                        @Html.DisplayFor(modelItem => item.codigo)
                    </td>
                    <td>
                        @Html.DisplayFor(modelItem => item.descricao)
                    </td>
                    <td>
                        @Html.DisplayFor(modelItem => item.codigo_ean)
                    </td>
                    <td>
                        <button type="button" class="btn btn-xs btn-danger" id="removerProduto" value="@item.id" onclick="RemoverProduto(this)">Remover</button>
                        @*@Ajax.ActionLink("Remover", "ItemNotaSaida/Delete", new { Id = item.id }, new AjaxOptions
                       {
                           HttpMethod = "POST",
                           InsertionMode = InsertionMode.Replace,
                           UpdateTargetId = "gridProduto",
                           OnSuccess = "DataTablesFactory();"
                       }, new { @class = "btn btn-xs btn-warning" })*@
                    </td>
                </tr>
            }
        </tbody>
    </table>


     Ai vem o erro, o evento não dispara, ao analisar, verifiquei que o erro vem do jquery.datatables.js

    Ao incluir <thead>, na segunda lista(produtos adicionados), o Evento funciona normalmente, entretando, é apresentado as opções de pesquisas, observe:

    Alguém já passou por esse problema?

     

    domingo, 7 de junho de 2015 19:45
  • Olá, Tiago. Tudo bem?

    Amigo, não entendi bem qual é o evento que não é disparado. Poderia explicar melhor?

    Abraço.


    Joel Rodrigues MSP, MCP, MTA Editor geral .NET Magazine E Easy .NET Magazine

    • Sugerido como Resposta Matheus L. M. C. Campos terça-feira, 16 de junho de 2015 21:18
    • Não Sugerido como Resposta Marcos SJ sexta-feira, 15 de janeiro de 2016 17:06
    • Marcado como Resposta Marcos SJ quinta-feira, 11 de fevereiro de 2016 18:48
    domingo, 7 de junho de 2015 23:54
  • Boa tarde,

    Por falta de retorno do usuário, esta thread será encerrada.

    Caso seja necessário, por gentileza, abra uma thread nova.

    Atenciosamente

    Marcos SJ

    Esse conteúdo e fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    quinta-feira, 11 de fevereiro de 2016 18:48