BINDINGSOURCE -> BINDINGLIST

PITERGALDIANO 27/04/2022 23:45:12
#499737
Tenho o código abaixo:

      
Dim dados As New BindingSource
Dim dfep As New Desconto_Financeiro_Excecao_Produtos
dados.DataSource = New BindingList(Of Desconto_Financeiro_Excecao_Produtos)(dfep.Lista(txtCodigo_Parceiro.Text, Codigo_Produto, True, False)).Where(Function(x) x.Codigo_Produto = ValorBuscar)
/

Acontece que quando informo na expressão lambda o ValorBuscar, cujo valor não esteja no retorno dos dados (um código inexistente), ocorre um erro devido o dados.datasource estar vinculado a um datagridview.

Seguinte erro:
Não é possível ligar à propriedade ou à coluna codigo_produto em DataSource.
Nome do parâmetro: dataMember

Se o código informado no valor de busca existir, o datagridview é populado corretamente.

como faço para contornar isso?

Obrigado.
KERPLUNK 28/04/2022 00:57:03
#499738
Resposta escolhida
Faça a lista numa variável e passe a variável para o datasource, verificando antes se não está null
PITERGALDIANO 28/04/2022 09:30:06
#499739
KERPLUNK, consegui o resultado esperado no seguinte código, porém duas questões:

1. No objeto List não consigo usar expressão lambda. Então usei outro objeto "myLista" que retona o filtro usando expressão lambda
2. No objeto "myLista" como faço para verificar se está em branco, não tem a propriedade "Cont" no mesmo. Tinha pensado em algo "myLista.Count <=0"

  
Dim lista As New List(Of Desconto_Financeiro_Excecao_Produtos)()
lista = (New List(Of Desconto_Financeiro_Excecao_Produtos)(dfep.Lista(txtCodigo_Parceiro.Text, Codigo_Produto, True, False)))
Dim mylista
mylista = (New BindingList(Of Desconto_Financeiro_Excecao_Produtos)(lista)).Where(Function(x) x.Codigo_Produto = Busca)


Obrigado.
PITERGALDIANO 28/04/2022 19:42:19
#499747
Precisava fazer a consulta da seguinte forma:

lista = lista.FindAll(Function(x) x.Descricao_Produto like ""%texto%a%procurar%"")

Exatamente igual no SQL, de forma que localize a palavra inteira ou parte da palavra.
KERPLUNK 29/04/2022 01:40:30
#499750
Acho que usando os coringas consegue esse resultado que quer
dim busca as string
busca = "texto a procurar"
busca = "*" & busca.Replace(" ", "*") & "*"
mylista = (New BindingList(Of Desconto_Financeiro_Excecao_Produtos)(lista)).Where(Function(x) x.Codigo_Produto.Contains(busca)
PITERGALDIANO 29/04/2022 09:45:06
#499751
Infelizmente não aceita os caracteres curingas....
Tópico encerrado , respostas não são mais permitidas