none
Quero adicionar uma quantidade de registro em uma view no ASP.NET MVC RRS feed

  • Pergunta

  • Ola Boa tarde,

    Estou tendo problema para mostra a quantidade de cliente registrado em uma view, eu so conseguir mostrar os cliente que estao cadastrados em uma tabela na view. Eu vi que tem que adicionar um contador no controle depois chama ele na view mas nao estou conseguindo e tambem me falaram que da de passa a quantidade por uma viewbag mas tambem nao conseguir :(.

    public class HomeController : Controller
        {
            private ClienteAplicacao appCliente;
    
            public HomeController()
            {
                appCliente = ClienteAplicacaoConstrutor.ClienteAplicacaoADO();
            }
    
    public ActionResult Index()
            {
                var countCliente = appCliente.ListarTodos();
                //falaram para eu adicionar esse count no meu listarTodos mas ele da erro.
                countCliente.Count();
                return View();
            }
        }

    Codigo ListarTodos

    private List<Cliente> TransformaEmLista(MySqlDataReader reader)
            {
                var cliente = new List<Cliente>();
                while (reader.Read())
                {
                    var temObjeto = new Cliente()
                    {
                        idCliente = int.Parse(reader["idCliente"].ToString()),
                        nomeCliente = reader["nomeCliente"].ToString(),
                        telefoneCliente = reader["telefoneCliente"].ToString(),
                        enderecoCliente = reader["enderecoCliente"].ToString(),
                        detalheCliente = reader["detalheCliente"].ToString(),
                        dataCliente = reader["dataCliente"].ToString()
                    };
                    cliente.Add(temObjeto);
                }
                reader.Close();
                return cliente;
            }  


    public IEnumerable<Cliente> ListarTodos() { using (contexto = new Contexto()) { var sqlQuery = "SELECT * FROM CLIENTE"; var retornoDataReader = contexto.ExecutaComandoComRetorno(sqlQuery); return TransformaEmLista(retornoDataReader); } }



    segunda-feira, 23 de novembro de 2015 15:13

Todas as Respostas

  • Olá amigo, escreva assim: 

    public ActionResult Index()
            {
                var countCliente = appCliente.ListarTodos();
                //count é uma propriedade
                countCliente.Count;
                return View();
            }
        }

    • Sugerido como Resposta Erick WendelMVP quarta-feira, 30 de dezembro de 2015 18:13
    quarta-feira, 30 de dezembro de 2015 18:12
  • Boa tarde.

    Filipi, para realizar somente o Count, crie um método somente com um "SELECT COUNT (*) FROM cliente".

    Utilizando este método ListarTodos tu irás retornar uma List<Cliente>, fazendo com que TODOS registros do banco sejam carregados. No começo pode não parecer que faça diferença, mas conforme o banco for sendo preenchido, o sistema ficará bastante lento.

    Para fazer somente a contagem, faça assim:

            string sqlCmd = "SELECT COUNT(*) FROM cliente";
    
            using (MySqlCommand cmd = new MySqlCommand(sqlCmd, mysqlConn))
            {
                mysqlConn.Open();
    
                long rowCount = (long)cmd.ExecuteScalar();
                return count;
            }
    Possivelmente no teu contexto deve ter algum método que faça um ExecuteScalar - caso não tenha, crie um.

    Att., Rafael Simor

    quarta-feira, 30 de dezembro de 2015 19:16