Jump to content
Darmendes

Textbox and combobox

Recommended Posts

Darmendes

Boas,

Tenho a seguinte situação:

O user tem de seleccionar o Client x na combobox que apresenta o ID , Nome e Address, isto e somente para visualizar porque somente irei precisar de inserir na BD o ID . Ou seja destes 3 argumentos como poderei somente utilizar 1 argumento neste caso o ID ?

Obrigado

Share this post


Link to post
Share on other sites
nelsonr

Boas,

como é que adicionaste essa informação à combobox? Uma string concatenada?

Share this post


Link to post
Share on other sites
Darmendes

Dentro de um foreach ( var c in db.Custm){

//Qualquer coisa como

....(c.IDCust+" "+c.Nome+" "+c.Address)

}

Portanto penso que e uma string concatenada, Certo?

Obrigado

Share this post


Link to post
Share on other sites
nelsonr

Ok, a meu ver o melhor é criares uma classe para guardares cada cliente.

Exemplo:

private class client
{
   public int ID;
   public string Nome;
   public string Address;

   // Fazes o override do ToString, que será usado para mostrar o conteúdo na combobox
   public override string ToString()
   {
       return (String.Format("{0} {1} {2}", this.ID, this.Nome, this.Address));
   }
}

Usas algo assim para adicionar cada cliente

comboBox1.Items.Add(new client()
{
   ID = 1,
   Nome ="client 1",
   Address ="address 1"
});

E para veres qual o selecionado,usas algo assim

if(comboBox1.SelectedIndex>=0)
{
   client cliente = (client)comboBox1.SelectedItem;

   MessageBox.Show(String.Format("Cliente selecionado: {0} - {1}", cliente.ID, cliente.Nome));
}

Share this post


Link to post
Share on other sites
Darmendes

Sim :) obrigado mas eu tenho isso tudo , a questao a combobox1 mostra os clientes mas eu preciso de seleccionar o cliente para inserir na tabela booking i IDcliente. e e esta parte que nao estou a conseguir uma vez que tenho os 3 args e tenho de usar somente o IDClient , o que esta a dar erro por causa da string... :(

Share this post


Link to post
Share on other sites
nelsonr

Ok, se preferes manter apenas a string na combobox, podes separar a string pelo caracter do espaço, ler o primeiro elemento e converter para inteiro.

Algo assim:

if(comboBox1.SelectedIndex>=0)
{
   //
   string[] tmp = comboBox1.SelectedItem.ToString().Split(' ');
   int ID = Convert.ToInt32(tmp[0]);
   //
   MessageBox.Show(String.Format("Cliente selecionado: {0}", ID));
}

Share this post


Link to post
Share on other sites
santanaguy

Já agora, o que estás a meter na DataSource da combobox?

-----------------EDIT

Podias era meter isso numa DataTable com as duas colunas e depois meter na combobox como o DataSource. Algo deste género, apesar de eu achar que a abordagem do nelsonr é melhor, com a classe:

ComboBox c = new ComboBox();
DataTable dt = new DataTable();
dt.Columns.Add("ID");
dt.Columns.Add("Name");

foreach (var element in this.Users)
{
   dt.Rows.Add(element.IDUser, element.Name);
}

c.DataSource = dt;
c.DisplayMember = "Name";
c.ValueMember = "ID";

Atenção que não testei.

Edited by santanaguy

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.