IDs en un ComboBox

11/05/2010 - 23:21 por Darhas | Informe spam
Hola a todos tengo una duda tonta

Saco unos datos de una Base de Datos para meterlos en un ComboBox.

Esos datos son TEXTO mas el ID de la base de datos.

Muestro en el ComboBox el TEXTO, pero mi duda es, como pongo en el ComboBox
el ID correspondiente al TEXTO, para recoger el ID de la seleccion.

Idem para un ListBox

En ASP si que se hacerlo, pongo el ejemplo del ASP para que me entendais
mejor.

<Select Name="Categoria" Onchange = "javascript:Envio();">
<option></option>
<option value="<%=RS("ID")%>"> <%=RS("TEXTOQUESEENTIENDE")%></option>
</Select>

Un saludo y gracias por todo
Darhas

Preguntas similare

Leer las respuestas

#6 Darhas
12/05/2010 - 18:16 | Informe spam
Gracias Alberto por la respuesta, pero como bien has dicho no lo he entendido.

Mira aqui tengo mi código

cnn = new OleDbConnection(ConexionBD);
cmd = new OleDbDataAdapter(sql, cnn);
cnn.Open();
DataSet ds = new DataSet();
cmd.Fill(ds);
cnn.Close();
DataTable dt = ds.Tables[0];

foreach (DataRow dr in dt.Rows)
{
Id = (Int32)dr[0];
NombreTarea = (string)dr[1];
Orden = (Int32)dr[2];
TipoPaso = (string)dr[3];
Texto1 = (string)dr[4];
Texto2 = (string)dr[5];
Texto3 = (string)dr[6];
GenerarLOG = (bool)dr[7];
RutaLOG = (string)dr[8];
FormatoTextoLOG = (string)dr[9];
listBox1.Items.Add(Orden + " " + TipoPaso + " " + Texto1 + "
" + Texto2 + " " + Texto3 + " ");
i++;
}

Ahora bien no se donde corresponde colocar lo que comentas, ni tampoco se
que he de poner :(

Gracias Alberto
Respuesta Responder a este mensaje
#7 Alberto Poblacion
12/05/2010 - 18:24 | Informe spam
"Darhas" wrote in message
news:
Gracias Alberto por la respuesta, pero como bien has dicho no lo he
entendido.

Mira aqui tengo mi código

cnn = new OleDbConnection(ConexionBD);
cmd = new OleDbDataAdapter(sql, cnn);
cnn.Open();
DataSet ds = new DataSet();
cmd.Fill(ds);
cnn.Close();
DataTable dt = ds.Tables[0];

foreach (DataRow dr in dt.Rows)
{
Id = (Int32)dr[0];
NombreTarea = (string)dr[1];
Orden = (Int32)dr[2];
TipoPaso = (string)dr[3];
Texto1 = (string)dr[4];
Texto2 = (string)dr[5];
Texto3 = (string)dr[6];
GenerarLOG = (bool)dr[7];
RutaLOG = (string)dr[8];
FormatoTextoLOG = (string)dr[9];
listBox1.Items.Add(Orden + " " + TipoPaso + " " + Texto1 +
"
" + Texto2 + " " + Texto3 + " ");
i++;
}

Ahora bien no se donde corresponde colocar lo que comentas, ni tampoco se
que he de poner :(

Gracias Alberto



Vale, vamos por partes. Primero necesitas definir en algún sitio una clase
auxiliar:

public class LineaParaCombo
{
//Propiedades automáticas (VS2008)
pubic int Id {get;set;}
public string Texto {get;set;}
//Constructor:
public LineaParaCombo(int id, string texto)
{
this.Id = id;
this.Texto = texto;
}
public override string ToString()
{
return Texto;
}
}

Segundo, en tu código, sutituye esta linea:
listBox1.Items.Add(Orden + " " + TipoPaso + " " + Texto1 + "
" + Texto2 + " " + Texto3 + " ");

Por esta:
string texto = Orden + " " + TipoPaso + " " + Texto1 + " " + Texto2 + " " +
Texto3;
listBox1.Items.Add(new LineaParaCombo(Id, texto));

Ya está. Con eso tiene que funcionar.

Para acceder al Id seleccionado:

LineaParaCombo lc = (LineaParaCombo)listBox1.SelectedItem;
int id = lc.Id;
Respuesta Responder a este mensaje
#8 Darhas
12/05/2010 - 23:51 | Informe spam
Hola Alberto

He probado el código que me has mandado y da error en los SETs y GETs

El error que da es el siguiente:

NombrePrograma.LineaParaCombo.Id.get must declare a body because it is not
marked abstract or extern


He probado tanto poner el códigod de la clase en Form como creandole una
Clase a parte.

¿Alguna idea?

Un abrazo y gracias por tu paciencia
Darhas


"Alberto Poblacion" wrote:

"Darhas" wrote in message
news:
> Gracias Alberto por la respuesta, pero como bien has dicho no lo he
> entendido.
>
> Mira aqui tengo mi código
>
> cnn = new OleDbConnection(ConexionBD);
> cmd = new OleDbDataAdapter(sql, cnn);
> cnn.Open();
> DataSet ds = new DataSet();
> cmd.Fill(ds);
> cnn.Close();
> DataTable dt = ds.Tables[0];
>
> foreach (DataRow dr in dt.Rows)
> {
> Id = (Int32)dr[0];
> NombreTarea = (string)dr[1];
> Orden = (Int32)dr[2];
> TipoPaso = (string)dr[3];
> Texto1 = (string)dr[4];
> Texto2 = (string)dr[5];
> Texto3 = (string)dr[6];
> GenerarLOG = (bool)dr[7];
> RutaLOG = (string)dr[8];
> FormatoTextoLOG = (string)dr[9];
> listBox1.Items.Add(Orden + " " + TipoPaso + " " + Texto1 +
> "
> " + Texto2 + " " + Texto3 + " ");
> i++;
> }
>
> Ahora bien no se donde corresponde colocar lo que comentas, ni tampoco se
> que he de poner :(
>
> Gracias Alberto

Vale, vamos por partes. Primero necesitas definir en algún sitio una clase
auxiliar:

public class LineaParaCombo
{
//Propiedades automáticas (VS2008)
pubic int Id {get;set;}
public string Texto {get;set;}
//Constructor:
public LineaParaCombo(int id, string texto)
{
this.Id = id;
this.Texto = texto;
}
public override string ToString()
{
return Texto;
}
}

Segundo, en tu código, sutituye esta linea:
listBox1.Items.Add(Orden + " " + TipoPaso + " " + Texto1 + "
" + Texto2 + " " + Texto3 + " ");

Por esta:
string texto = Orden + " " + TipoPaso + " " + Texto1 + " " + Texto2 + " " +
Texto3;
listBox1.Items.Add(new LineaParaCombo(Id, texto));

Ya está. Con eso tiene que funcionar.

Para acceder al Id seleccionado:

LineaParaCombo lc = (LineaParaCombo)listBox1.SelectedItem;
int id = lc.Id;


.

Respuesta Responder a este mensaje
#9 Alberto Poblacion
13/05/2010 - 08:50 | Informe spam
"Darhas" wrote in message
news:
He probado el código que me has mandado y da error en los SETs y GETs

El error que da es el siguiente:

NombrePrograma.LineaParaCombo.Id.get must declare a body because it is not
marked abstract or extern



¿Te has fijado en el comentario que puse en el código diciendo que eso
son propiedades automáticas de Visual Studio 2008? Si tienes una versión más
antigua de Visual Studio, tendrás que escribir las propiedades con la
sintaxis "tradicional", declarando una variable privada y pomiéndole cuerpo
al get y al set.

Por ejemplo, este código de VS2008:
pubic int Id {get;set;}

equivale a este otro en VS2005 y anteriores:
private int id;
pubic int Id {get{return id;}set{id=value;}}
Respuesta Responder a este mensaje
#10 Darhas
13/05/2010 - 22:03 | Informe spam
Hola Alberto,

Muchisimas gracias ya me funciona. Como siempre eres una fuente de sabiduria.

Un abrazo y una vez mas gracias
Darhas
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida