Erro ao em ListView
04/07/2013
0
private void CarregaListView() { Dados objDados = new Dados(); List<CrudBasico.Dados.Clientes> listaClientes = new List<Dados.Clientes>(); listaClientes = objDados.Consultar(); ListViewItem objListViewItem = new ListViewItem(); foreach (var itemLista in listaClientes) { objListViewItem.Text = itemLista.IdCliente.ToString(); objListViewItem.Text = itemLista.Nome; objListViewItem.Text = itemLista.Endereco; objListViewItem.Text = itemLista.Telefone; objListViewItem.Text = itemLista.Sexo; if (itemLista.Ativo) objListViewItem.SubItems.Add("Sim"); else objListViewItem.SubItems.Add("Não"); objListViewItem.SubItems.Add(itemLista.DataCadastro.ToShortTimeString()); lsvClientes.Items.Add(objListViewItem); }
O erro que ele retorna = "Cannot add or insert the item 'F' in more than one place. You must first remove it from its current location or clone it.
Parameter name: item";
Acontece na penultima linha :
lsvClientes.Items.Add(objListViewItem);
Raniel Gomes
Posts
04/07/2013
Raniel Gomes
objListViewItem.Text = Convert.ToString(itemLista.IdCliente); objListViewItem.SubItems.Add(itemLista.Nome); objListViewItem.SubItems.Add(itemLista.Endereco); objListViewItem.SubItems.Add(itemLista.Telefone); objListViewItem.SubItems.Add(itemLista.Sexo); if (itemLista.Ativo) objListViewItem.SubItems.Add("Sim"); else objListViewItem.SubItems.Add("Não"); objListViewItem.SubItems.Add(itemLista.DataCadastro.ToShortTimeString()); lsvClientes.Items.Add(objListViewItem);
Mais agora dá outro erro: Cannot add or insert the item '16' in more than one place. You must first remove it from its current location or clone it.
Parameter name: item
04/07/2013
Raniel Gomes
private void CarregaListView() { Dados objDados = new Dados(); List<CrudBasico.Dados.Clientes> listaClientes = new List<Dados.Clientes>(); listaClientes = objDados.Consultar(); ListViewItem objListViewItem = new ListViewItem(); foreach (var itemLista in listaClientes) { objListViewItem.Text = itemLista.IdCliente.ToString(); objListViewItem.SubItems.Add(itemLista.Nome); objListViewItem.SubItems.Add(itemLista.Endereco); objListViewItem.SubItems.Add(itemLista.Telefone); objListViewItem.SubItems.Add(itemLista.Sexo); if (itemLista.Ativo) objListViewItem.SubItems.Add("Sim"); else objListViewItem.SubItems.Add("Não"); objListViewItem.SubItems.Add(itemLista.DataCadastro.ToShortDateString()); lsvClientes.Items.Add(objListViewItem); } }
04/07/2013
Raniel Gomes
Minha Classe de dados
Aqui segue o código do meu método e sua chamada no Formload:
private void Consulta02_Load(object sender, EventArgs e) { CarregaListView(); } private void CarregaListView() { Dados objDados = new Dados(); List<CrudBasico.Dados.Clientes> listaClientes = new List<Dados.Clientes>(); listaClientes = objDados.Consultar(); ListViewItem objListViewItem = new ListViewItem(); foreach (var itemLista in listaClientes) { objListViewItem.Text = itemLista.IdCliente.ToString(); objListViewItem.SubItems.Add(itemLista.Nome); objListViewItem.SubItems.Add(itemLista.Endereco); objListViewItem.SubItems.Add(itemLista.Telefone); objListViewItem.SubItems.Add(itemLista.Sexo); if (itemLista.Ativo) objListViewItem.SubItems.Add("Sim"); else objListViewItem.SubItems.Add("Não"); objListViewItem.SubItems.Add(itemLista.DataCadastro.ToShortDateString()); try { lsvClientes.Items.Add(objListViewItem); } catch(Exception e) { MessageBox.Show("Houve um erro "+e.Message); } }
Fonte dá minha classe Dados:
string de consulta =
public const string strSelect = "SELECT IdCliente,Nome,Endereco,Telefone,Sexo,Ativo,DataCadastro FROM clientes";
Minha classe clientes:
public class Clientes { public int IdCliente { get; set; } public string Nome { get; set; } public string Endereco { get; set; } public string Telefone { get; set; } public string Sexo { get; set; } public bool Ativo { get; set; } public DateTime DataCadastro { get; set; } }
Por fim meu código para povoar Listiview:
//Listar dados em um GridView public List<Clientes> Consultar() { List<Clientes> lstClientes = new List<Clientes>(); using (MySqlConnection objConexao = new MySqlConnection (strConexao)) { using (MySqlCommand objCommand = new MySqlCommand(strSelect, objConexao)) { objConexao.Open(); MySqlDataReader objDataReader = objCommand.ExecuteReader(); if (objDataReader.HasRows) { while (objDataReader.Read()) { Clientes objCliente = new Clientes(); objCliente.IdCliente = Convert.ToInt32(objDataReader["IdCliente"].ToString()); objCliente.Nome = objDataReader["Nome"].ToString(); objCliente.Endereco = objDataReader["Endereco"].ToString(); objCliente.Telefone = objDataReader["Telefone"].ToString(); objCliente.Sexo = objDataReader["Sexo"].ToString(); if (objDataReader["Ativo"].ToString().Equals("0")) objCliente.Ativo = false; else objCliente.Ativo = true; objCliente.DataCadastro = Convert.ToDateTime(objDataReader["DataCadastro"].ToString()); lstClientes.Add(objCliente); } objDataReader.Close(); } objConexao.Close(); } } return lstClientes; }
O erro que retorna é o seguinte: Cannot add or insert the item '22' in more than one place. You must first remove it from its current location or clone it.
Parameter name: item
Obs: Sempre mostra o ultimo campo e só isso.
Clique aqui para fazer login e interagir na Comunidade :)