Erro ao em ListView
Oi pessoal, estou com um probleminha em um método para povoar um ListView:
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 :
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
Curtidas 0
Respostas
Raniel Gomes
04/07/2013
Encontrei o erro na hora de add os subitems:
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
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
GOSTEI 0
Raniel Gomes
04/07/2013
Resolvi galera meu código ficou assim:
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);
}
}
GOSTEI 0
Raniel Gomes
04/07/2013
Olá galera meu erro volto, quando eu tenho apenas um campo passa blz mais quando eu add outro ai surge o pro:
Minha Classe de dados
Aqui segue o código do meu método e sua chamada no Formload:
Fonte dá minha classe Dados:
string de consulta =
Minha classe clientes:
Por fim meu código para povoar Listiview:
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.
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.
GOSTEI 0
Joel Rodrigues
04/07/2013
Este problema foi sanado em outro tópico, certo?
GOSTEI 0