Usuário com melhor resposta
Inserir itens num Grid

Pergunta
-
Respostas
-
Diego, tudo bem? pelo o que entendi, se trata de uma listagem de dados simples, não é?
como está usando ASP.NET MVC, usa o Scaffold para exibir em tabela os produtos...
Quando você for listar, usa uma View tipada, se for necessário faz uma ViewModel que contempla Produto e subproduto...quando for inserir, você joga essa classe Produto numa Action, estando no servidor você fragmenta o Produto como quiser...
http://www.macoratti.net/14/04/mvc_crud.htm
Se tiver dúvida sobre ViewModel, aqui está:
http://eduardopires.net.br/2013/08/asp-net-mvc-view-model-pattern-quando-e-como-utilizar/
- Editado Diego de Oliveira Neves quarta-feira, 2 de julho de 2014 19:47
- Marcado como Resposta Diego Bexa sexta-feira, 4 de julho de 2014 15:01
-
Diego...faz um teste, troca sua linha
<td>
@item.produto
</td>
por
<td> @Html.DisplayFor(modelItem => item.produto) </td>
e assim nos demais...
posta depois os resultados...
abraço!!!
- Marcado como Resposta Diego Bexa sexta-feira, 4 de julho de 2014 15:01
Todas as Respostas
-
Olha esse exemplo que utilizei recentemente:
private void inserirProdOrcamento() { //Instância da conexão onde passo a //ConnectionString if (!String.IsNullOrEmpty(txtCodOrcamento.Text)) { MySqlConnection conn = daoBanco.getInstancia().getConexao(); //sql que será executado na tabela cliente StringBuilder sb = new StringBuilder(); sb.Append("INSERT INTO prodorcamento (FkidOrcamento,idProduto, "); sb.Append("Qtd,valorDesconto,Servico,Dano,hsPintura,hsServico, "); sb.Append("PrecoTotal,Autorizacao) "); sb.Append("VALUES (@idOrcamento,@idProduto, @Qtd,@valorDesconto "); sb.Append(",@Servico,@Dano,@hsPintura,@hsServico,@PrecoTotal,@Autorizacao)"); //instância do comando onde passo //o sql e a conexão como parâmetro MySqlCommand cmd = new MySqlCommand(sb.ToString(), conn); //abro a conexão conn.Open(); //percorro o DataGridView for (int i = 0; i < dgvDetalhes.Rows.Count; i++) { if (dgvDetalhes.Rows[i].Cells[0].Value != null && dgvDetalhes.Rows[i].Cells[1].Value != null) { cmd.Parameters.AddWithValue("@idOrcamento", txtCodOrcamento.Text); cmd.Parameters.AddWithValue("@idProduto", dgvDetalhes.Rows[i].Cells[12].Value); cmd.Parameters.AddWithValue("@Qtd", dgvDetalhes.Rows[i].Cells[2].Value); cmd.Parameters.AddWithValue("@codProduto", dgvDetalhes.Rows[i].Cells[3].Value); cmd.Parameters.AddWithValue("@codOrginal", dgvDetalhes.Rows[i].Cells[4].Value); cmd.Parameters.AddWithValue("@valorDesconto", dgvDetalhes.Rows[i].Cells[8].Value); cmd.Parameters.AddWithValue("@Servico", dgvDetalhes.Rows[i].Cells[0].Value); cmd.Parameters.AddWithValue("@Dano", dgvDetalhes.Rows[i].Cells[1].Value); cmd.Parameters.AddWithValue("@hsPintura", dgvDetalhes.Rows[i].Cells[10].Value); cmd.Parameters.AddWithValue("@hsServico", dgvDetalhes.Rows[i].Cells[9].Value); cmd.Parameters.AddWithValue("@PrecoTotal", dgvDetalhes.Rows[i].Cells[7].Value); cmd.Parameters.AddWithValue("@Autorizacao", dgvDetalhes.Rows[i].Cells[11].Value); cmd.ExecuteNonQuery(); cmd.Parameters.Clear(); } } //Fecho conexão conn.Close(); } }
- Sugerido como Resposta Raniel Nogueira quarta-feira, 2 de julho de 2014 18:15
-
-
-
-
Exemplo, conforme vou selecionando o produto e o subproduto no combo e clico em adicionar ele vai para minha grid através de Ajax, ou Jquery.
Olha esse exemplo achei interessante:Utilizando gridview Dinâmico
-
Diego, tudo bem? pelo o que entendi, se trata de uma listagem de dados simples, não é?
como está usando ASP.NET MVC, usa o Scaffold para exibir em tabela os produtos...
Quando você for listar, usa uma View tipada, se for necessário faz uma ViewModel que contempla Produto e subproduto...quando for inserir, você joga essa classe Produto numa Action, estando no servidor você fragmenta o Produto como quiser...
http://www.macoratti.net/14/04/mvc_crud.htm
Se tiver dúvida sobre ViewModel, aqui está:
http://eduardopires.net.br/2013/08/asp-net-mvc-view-model-pattern-quando-e-como-utilizar/
- Editado Diego de Oliveira Neves quarta-feira, 2 de julho de 2014 19:47
- Marcado como Resposta Diego Bexa sexta-feira, 4 de julho de 2014 15:01
-
Boa tarde Diego !
Obrigado pela resposta, estava fazendo exatamente usando ViewModel, porém estou com problema de passar para a View.
Criei uma view Mode da lista de produtos para exibição no grid;
public class ListaProdutoViewModel { public IEnumerable Produto { get; set; } public IEnumerable Sub_Produto { get; set; } }
Tenho um método que transforma o DataReader em uma lista de objeto, estou estanciando as classes produto e subproduto e depois estou populando a view classe.
public ListaProdutoViewModel TransformaReaderEmListaDeObjeto(SqlDataReader reader) { var Contr_Prod = new List<Produto>(); while (reader.Read()) { var temObjeto = new Produto() { PROD_CODIGO = reader["PROD_CODIGO"].ToString(), PROD_DESCRICAO = reader["PROD_DESCRICAO"].ToString(), }; Contr_Prod.Add(temObjeto); } reader.Close(); var Contr_SubProd = new List<Sub_Produto>(); while(reader.Read()) { var temObjeto = new Sub_Produto() { SUBPROD_DESCRICAO = reader["SUBPROD_DESCRICAO"].ToString(), }; Contr_SubProd.Add(temObjeto); } reader.Close(); var contrato = new ListaProdutoViewModel(); { contrato.Produto = Contr_Prod; contrato.Sub_Produto = Contr_SubProd; }; return contrato; } }
Porém na view não consigo ter acesso aos atributos das classes, no momento de puxar na view como o caso abaixo em negrito.
@foreach (var item in Model.Produto) { <tr> <td> @item.PROD_CODIGO
-
Fala Diego, beleza?
Tenta assim, já já to em casa e testo, é que no cliente que estou hoje não tem como usar MVC kkkk
logo no inicio da View poe assim:
@model IEnumerable<MvcApp.Models.ViewModelExemplo>
e no foreach, faz assim como nesse link:
http://felipecvlh.blogspot.com.br/p/iniciando-com-aspnet-mvc-parte-5.html
-
Fala chará beleza !
Minha view já está tipada
@model IEnumerable<ProjetoZ1.Classes.ViewModel.ListaProdutoViewModel>
Porém mesmo usando o Helper não consigo ter acesso. Achei uns bugs no algoritmo vou ajustar vai que isso está influenciando. Posto os resultados.
Abraço !
-
Bom dia !
Refatorei os código porém mesmo assim, na view tipada não consigo jogar os valores:
Segue abaixo meu método que retorna a lista de com os dados.
public ListaProdutoViewModel TransformaReaderEmListaDeObjeto(SqlDataReader reader) { var Contr_Prod = new List<Produto>(); var Contr_SubProd = new List<Sub_Produto>(); while (reader.Read()) { var temObjeto = new Produto() { PROD_CODIGO = reader["PROD_CODIGO"].ToString(), PROD_DESCRICAO = reader["PROD_DESCRICAO"].ToString(), }; Contr_Prod.Add(temObjeto); var temObjeto2 = new Sub_Produto() { SUBPROD_DESCRICAO = reader["SUBPROD_DESCRICAO"].ToString(), }; Contr_SubProd.Add(temObjeto2); } reader.Close(); var contrato = new ListaProdutoViewModel(); { contrato.produto = Contr_Prod; contrato.sub_Produto = Contr_SubProd; } return contrato; }
No controller estou passando para a view:
var ViewGridProduto = Contrato_ProdutoAplicacaoConstrutor.Contrato_ProdutoADO(); var listaGridProduto = ViewGridProduto.ListarPorID("0005"); return View(listaGridProduto);
Porém na View o máximo que consigo puxar é o atributo produto, só que preciso pegar o atributo codigo que está dentro de produto.
@foreach(var item in Model) { <tr> <td> @item.produto </td>
Obrigado !
-
Diego...faz um teste, troca sua linha
<td>
@item.produto
</td>
por
<td> @Html.DisplayFor(modelItem => item.produto) </td>
e assim nos demais...
posta depois os resultados...
abraço!!!
- Marcado como Resposta Diego Bexa sexta-feira, 4 de julho de 2014 15:01
-
Bom dia Diego !
O meu problema está para popular uma Ienumerable de duas classes (Produto, SubProduto) para exibição na view, no caso criei essa view mode:
public class ListaProdutoViewModel { public IEnumerable<Produto> produto { get; set;} public IEnumerable<Sub_Produto> sub_produto { get; set;} }
Como faço para jogar o resultado de uma consulta nesse Model ?
-