LIST<T> QUE NÃO RETORNA ITEM
Experimente assim:
List<Mensagem> registros = ((List<Mensagem>)dgvMensagens.DataSource).Where(x => x.Check == true).ToList();
registros.ForEach(x => x.Delete());
Kerplunk, desculpa aÃ, cara, mas não deu.
A linha não fica mais sublinhada, só que quando rodo, aparece o erro que não é possÃvel converter objeto do tipo BindingSource para tipo List..
A linha não fica mais sublinhada, só que quando rodo, aparece o erro que não é possÃvel converter objeto do tipo BindingSource para tipo List..
Essa coluna que você adicionou, está no objeto Mensagem ou é só uma coluna a mais no grid que você adicionou à mão?
Está no objeto Mensagem
Simplesmente, quando abro o Form, torno a coluna invisÃvel, depois quando o usuário clica em um botão, torno-a visÃvel. AÃ ele vai selecionar as linhas e clicar em outro botão para confirmar a exclusão.
private bool _check;
[Browsable(true)]
[DisplayName([Ô]Check[Ô])]
public bool Check
{
get { return _check; }
set { _check = value; }
}
Simplesmente, quando abro o Form, torno a coluna invisÃvel, depois quando o usuário clica em um botão, torno-a visÃvel. AÃ ele vai selecionar as linhas e clicar em outro botão para confirmar a exclusão.
Você está usando BindingList, então tem que converter para a lista de acordo. Não tinha reparado nisso. Acho que assim deve dar.
BindingList<Mensagem> registros = ((BindingList<Mensagem>)dgvMensagens.DataSource).Where(x => x.Check == true).ToList();
registros.ForEach(x => x.Delete());
Agora, essa linha: ((BindingList<Mensagem>)dgvMensagens.DataSource).Where(x => x.Check == true).ToList(); fica sublinhada
E o ForEach não é aceito.
Estou preenchendo o DataSource dessa maneira:
E o ForEach não é aceito.
Estou preenchendo o DataSource dessa maneira:
List<Mensagem> lista_mensagens = new List<Mensagem>();
lista_mensagens = lista_mensagens.Where(x => (x.De == _user && x.Para == _contact) || (x.De == _contact && x.Para == _user)).OrderByDescending(x => x.Data).ThenByDescending(x => x.Hora).ToList();
BindingSource dados = new BindingSource();
dados.DataSource = lista_mensagens;
dgvMensagens.DataSource = dados;
Bom, Kerp, eu estou quase indo embora do [Ô]trampo[Ô], isso aqui já me fundiu a cabeça, melhor deixar pra amanhã.
Se por acaso descobrir onde é que estou errando, pode postar que amanhã logo cedo eu vejo, testo e depois te dou a resposta.
Obrigado por enquanto.
Se por acaso descobrir onde é que estou errando, pode postar que amanhã logo cedo eu vejo, testo e depois te dou a resposta.
Obrigado por enquanto.
Se você não está [Ô]amarrando[Ô] os dados à outros controles que não o Grid, não vejo razão para usar um BindingSource, simplesmente passar a List<T> para o grid vai facilitar as coisas.
Kerplunk, é que eu não sabia que poderia passar a List<T> direto para o DataGridView, tinha feito como você ensinou na sua vÃdeo aula.
Agora eu fiz assim:
Agora funcionou.
Mais uma vez muito obrigado pela paciência e disponibilidade em me ajudar. é claro que ainda terei mais dúvidas para postar aqui, com certeza estarei de volta.
Até mais.
Agora eu fiz assim:
List<Mensagem> lista_mensagens = new Mensagem().GetAll();
if (lista_mensagens.Count == 0)
{
return;
}
else
}
lista_mensagens = lista_mensagens.Where(x => (x.De == _user && x.Para == _contact) || (x.De == _contact && x.Para == _user)).OrderByDescending(x => x.Data).ThenByDescending(x => x.Hora).ToList();
dgvMensagens.DataSource = lista_mensagens;
}
Agora funcionou.
Mais uma vez muito obrigado pela paciência e disponibilidade em me ajudar. é claro que ainda terei mais dúvidas para postar aqui, com certeza estarei de volta.
Até mais.
No vÃdeo, eu usei um DataBinding porque cada item do grid seria editado em textbox especÃficas, para aquele cenário do vÃdeo, é a melhor alternativa. Mas se você vai simplesmente exibir os dados no grid, basta passar a List<T> mesmo.
Tópico encerrado , respostas não são mais permitidas