LIST<T> QUE NÃO RETORNA ITEM

KERPLUNK 26/04/2016 15:48:27
#461447
Experimente assim:

List<Mensagem> registros = ((List<Mensagem>)dgvMensagens.DataSource).Where(x => x.Check == true).ToList();
registros.ForEach(x => x.Delete());
PERCIFILHO 26/04/2016 15:54:36
#461448
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..
KERPLUNK 26/04/2016 16:15:08
#461449
Essa coluna que você adicionou, está no objeto Mensagem ou é só uma coluna a mais no grid que você adicionou à mão?
PERCIFILHO 26/04/2016 16:18:20
#461450
Está no objeto Mensagem

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.
KERPLUNK 26/04/2016 16:21:46
#461451
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());
PERCIFILHO 26/04/2016 16:28:06
#461452
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:
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;

PERCIFILHO 26/04/2016 16:36:45
#461454
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.
KERPLUNK 26/04/2016 21:04:21
#461467
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.
PERCIFILHO 27/04/2016 07:20:32
#461481
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:

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.
KERPLUNK 27/04/2016 16:34:27
#461531
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.
Página 2 de 2 [20 registro(s)]
Tópico encerrado , respostas não são mais permitidas