problema combobox

30/09/2012

0

Olá
Sou iniciante, e estou procurando fazer a coisa da forma mais correta
sendo assim tenho seguinte codigo
*******************************************
conexao.open();
NpgsqlCommand comando = new NpgsqlCommand("select mid_codigo codigo,mid_nome nome from midias ", conexao.getconexao());
NpgsqlDataReader dr = comando.ExecuteReader();
DataTable dtmidia = new DataTable();
dtmidia.Load(dr);


dllmidias.DataSource = dtmidia;
dllmidias.ValueMember = "codigo";
dllmidias.DisplayMember = "nome";
*****************************************************************
ou seja, funciona

mas penso, se eu tenho as classes, correto nao seria o caso e fazer algo do tipo

******************************************************************

ENmidias midias = new ENmidias();
listaMidias = RNmidias.Todas(midias);

dllmidias.DataSource = listaMidias;
dllmidias.ValueMember = Convert.ToString(listaMidias[0].codigo);
dllmidias.DisplayMember = listaMidias[0].nome;
**********************************************************************
Ai me da um erro :


Cannot bind to the new display member.
Parameter name: newDisplayMember

Ocorre que DisplayMember tras o nome corretamente, o erro se da no ValueMember que nao carrega o codigo ...Nao consigo resolver
Desde ja agradeço
Jorge Meneses

Jorge Meneses

Responder

Posts

30/09/2012

Tiago

Bom dia Jorge,

Bom eu fiz pela DropDownlist e acredito que por ela,seja mais simples.

         DropDownList1.DataTextField = "";// Nome que voce deseja listar pela dropdownlist
        DropDownList1.DataValueField = "";// Código referenciado aos itens da dropdownlist



Espero ter ajudado
Responder

30/09/2012

Jorge Meneses

Opa
Tiago
Bahh valeu, mas é que é no Windows Forms dai nao tem dropdownlist rsrrs

Responder

30/09/2012

Tiago

Opa, desculpe é que sou acostumado a trabalhar com projetos web.

Fiz um teste no windows forms e ficou da seguinte forma:

            comboBox1.DisplayMember = "Nome_campo";
            comboBox1.ValueMember = "Codigo_campo";

Pelo que vejo a sintaxe está correta, sera que nessa linha :
dllmidias.ValueMember = Convert.ToString(listaMidias[0].codigo);

A referencia estaria correta? por exemplo a posição no vetor... seria interessante usar o debug para poder confirmar.
Responder

30/09/2012

Jorge Meneses

Bahh eu dei uma de loko e fiz uma mescla da coisa e funcionou rsrs
vai saber rsrss
Valeu Tiago pelo help


ENmidias midias = new ENmidias();
listaMidias = RNmidias.Todas(midias);

dllmidias.DataSource = listaMidias;
dllmidias.ValueMember = "codigo";
dllmidias.DisplayMember = "nome";
Responder

30/09/2012

Tiago

Por nada rapaz...
Responder

03/10/2012

Edson Oliveira

Jorge Meneses tem outro jeito que tb funciona, eu gosto de usar mais esse jeito, os dois modos funciona sem problemas.

Client client1 = new Client(1, "Client 1");
Client client2 = new Client(2, "Client 2");
Client client3 = new Client(3, "Client 3");

listBox1.Items.Add(new ItemList(client1.Name, client1));
listBox1.Items.Add(new ItemList(client2.Name, client2));
listBox1.Items.Add(new ItemList(client3.Name, client3));
listBox1.SelectedIndex = 0;

ItemList oItemList = (ItemList)listBox1.SelectedItem;
Client oClient = (Client)oItemList.Value;

public class ItemList
{
    public string Text { get; set; }
    public object Value { get; set; }

    public ItemList() { }

    public ItemList(string text, object value) 
    {
        this.Text = text;
        this.Value = value;
    }

    public override string ToString()
    {
        return this.Text;
    }
}

public class Client
{
    public int Id { get; set; }
    public string Name { get; set; }

    public Client(int id, string name)
    {
        this.Id = id;
        this.Name = name;
    }
}
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar