Array
(
)

Problemas com DataSource usando List<T>

Alexandre Silva
   - 12 jun 2012

Estou com um problema a dias e não consigo entender o que ocorre...
Tenho as seguintes classes:
BllItensSemProgrMap
Essa será a classe que representa a entidade
BllDbItensSemProgr
Essa será a classe de manipulação da entidade, salvar no banco, acrescentar, etc...
Segue as definições...
public class BllItensSemProgrMap
{
private Int64 _seq_tab = 0;
private Int16 _cod_tipo;
private Int16 _cod_cliente;
private string _cod_up;
private DateTime _dt_prog;
private Int16 _qtd;
private string _cor;
private int _cod_tarefa;
private string _desc_geral;
private int _nf_cliente;
private int _serie_nf_cliente;
private int _seq_nf_cliente;
static private Int64 seq_ini = 10000000000;
public BllItensSemProgrMap(Int16 cod_tipo,
Int16 cod_cliente,
string cod_up,
DateTime dt_prog,
Int16 qtd,
string cor,
int cod_tarefa,
string desc_geral,
int nf_cliente,
int serie_nf_cliente,
int seq_nf_cliente)
{
this._seq_tab = GetNextSeqTab();
this._cod_tipo = cod_tipo;
this._cod_cliente = cod_cliente;
this._cod_up = cod_up;
this._dt_prog = dt_prog;
this._qtd = qtd;
this._cor = cor;
this._cod_tarefa = cod_tarefa;
this._desc_geral = desc_geral;
this._nf_cliente = nf_cliente;
this._serie_nf_cliente = serie_nf_cliente;
this._seq_nf_cliente = seq_nf_cliente;
}
private Int64 GetNextSeqTab()
{
seq_ini++;
return seq_ini;
}
public Int64 SeqTab { get { return _seq_tab; } }
public Int16 CodTipo { get { return _cod_tipo; } }
public Int16 CodCliente { get { return _cod_cliente; } }
public string UP { get { return _cod_up; } }
public DateTime DataPrograma { get { return _dt_prog; } }
public Int16 Qtd { get { return _qtd; } }
public string Cor { get { return _cor; } }
public int CodTarefa { get { return _cod_tarefa; } }
public string DescGeral { get { return _desc_geral; } }
public int NF_CLietne { get { return _nf_cliente;} }
public int Serie { get { return _serie_nf_cliente;} }
public int Seq { get { return _seq_nf_cliente; } }
}
public class BllDbItensSemProgr
{
private List<BllItensSemProgrMap> ItensSemProg = new List<BllItensSemProgrMap>();
public Int64 Add(BllItensSemProgrMap item)
{
ItensSemProg.Add(item);
return item.SeqTab;
}
public Int64 Rem(BllItensSemProgrMap item)
{
ItensSemProg.Remove(item);
return item.SeqTab;
}
public bool SalvarItensDB()
{
return true;
}
public int NumItens()
{
return ItensSemProg.Count;
}
public List<BllItensSemProgrMap> GetItens()
{
return ItensSemProg;
}
public bool LimparItens()
{
try
{
ItensSemProg.Clear();
return true;
}
catch
{
return false;
}
}
}
O Problema é o seguinte...
No form após criar diversos elementos para o List<BllItensSemProgrMap> ItensSemProg
usando o método da classe BllDbItensSemProgr Add...
Eu tenho um objeto ItensSemProg dentro da classe BllDbItensSemProgr com os itens...
Entretanto quando eu os coloco em um dataGrid sempre aparece apenas o primeiro elemento da lista...
Já procurei em diversos lugares e não achei a solução...
Alguém pode me ajudar?

Alexandre Silva
   - 12 jun 2012

Já descobri....
O problema estava na carga do datagride...

Estava assim:
dataGrid1.SetDataBinding(bllDbItemSProg.GetItens(), null);
dataGrid1.Update();

Mas o correto é assim:
dataGrid1.DataSource = null;
dataGrid1.SetDataBinding(bllDbItemSProg.GetItens(), null);
dataGrid1.Update();
Não sei por que mas.. funcionou...
Obrigado!

0
|
0

Joel Rodrigues
   - 12 jun 2012

Só explicando, você estava tentando ´´setar´´ um databinding por cima do outro. Outra forma de fazer seria: grid.DataSource = minhaLista;

Enfim, que bom que você resolveu.
Boa sorte.

0
|
0

Alexandre Silva
   - 12 jun 2012


Citação:
Só explicando, você estava tentando ´´setar´´ um databinding por cima do outro. Outra forma de fazer seria: grid.DataSource = minhaLista;

Enfim, que bom que você resolveu.
Boa sorte.


Olha só eu fiz assim:
dgItens.DataSource = bllDbItemSProg.GetItens();
dgItens.Update();

Não deu certo....
Ele aparece somente o primeiro...
Lembrando que a cada elemento novo que eu adiciono no List... eu executo isso:
dgItens.DataSource = bllDbItemSProg.GetItens();
dgItens.Update();

Só da certo se eu colocar o null antes...

dgItens.DataSource = null;
dgItens.DataSource = bllDbItemSProg.GetItens();
dgItens.Update();

0
|
0