Usuário com melhor resposta
Lista de Produtos com erro de Evento

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?
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
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?
-
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
-
Boa tarde,
Por falta de retorno do usuário, esta thread será encerrada.
Caso seja necessário, por gentileza, abra uma thread nova.
AtenciosamenteMarcos 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.