ComboBox

24/07/2007 - 16:58 por Nuno Santos | Informe spam
Hola grupo,

Tengo una combobox con dados de una tabla, pero quiero que
el primer ítem del combo sea, por ejemplo: "-- Todos --", como puedo hacer
para que el primer ítem de la combo sea el "--Todos --" y sólo después
vengan los ítems de la tabla.

Gracias de antemano,

Esto es lo que tengo:

myDll.LotesClass plLotes = new myDll.LotesClass();



ADODB.Recordset RS = plLotes .GetListaLotes();

DataSet ds = new DataSet();

OleDbDataAdapter da = new OleDbDataAdapter();

da.Fill(ds, RS, "Lotes");



this.cbLote.DataSource = ds;



this.cbLote.DataSource = ds.Tables["Lotes"].DefaultView;

this.cbLote.DisplayMember = "NumLote";

this.cbLote.ValueMember = "IdLote";

this.cbLote.FormatString = "0000";

plLotes = null;

Preguntas similare

Leer las respuestas

#6 Mauricio Atanache
25/07/2007 - 00:53 | Informe spam
Otra manera sería que en Procedimiento almacenado donde haces la consulta
hagas :

Select idTipo, NomTipo from Nav_Tipo Union Select null as idTipo, '--
Todos -- ' as NomTipo order by idTipo

Ya con eso la consulta te trae la primera fila con un valor de null.



Cordial saludo,





Mauricio Atanache G.
Respuesta Responder a este mensaje
#7 Nuno Santos
25/07/2007 - 09:56 | Informe spam
Gracias a todos,
Es asin, no quiero estar a alterar la query, visto que esta es de una DLL
en VB6 que está siendo utilizada en otros casos, para ya lo voy a dejar como
tengo y voy a tener el cuidado de no tener la property
ClearBeforeFill=true...

Gracias,
NS

"Mauricio Atanache" wrote in message
news:
Otra manera sería que en Procedimiento almacenado donde haces la consulta
hagas :

Select idTipo, NomTipo from Nav_Tipo Union Select null as idTipo, '--
Todos -- ' as NomTipo order by idTipo

Ya con eso la consulta te trae la primera fila con un valor de null.



Cordial saludo,





Mauricio Atanache G.


Respuesta Responder a este mensaje
#8 Nuno Santos
25/07/2007 - 09:58 | Informe spam
Gracias Juanjo, lo voy a verificar...

NS


"[Juanjo]" wrote in message
news:
Yo que lo que hago normalmentes es:
1. LLeno el DataTable que contendra los datos del combo (como lo haces tu)
2. Inserto una nueva fila en la primera posicion del datatable.

Creo que si primero insertas la fila y el metodo Fill esta configurado por
defecto con
ClearBeforeFill=true te borra todo lo que tienes en el datatable por lo
que pierdes la
primera fila.

Un saludo.



"Nuno Santos" <nunos7@[REMOVER]hotmail.com> escribió en el mensaje
news:
Lo que hice:
DataTable dt = new DataTable();
DataRow dr = dt.NewRow();
dt.Rows.Add(dr);
OleDbDataAdapter da = new OleDbDataAdapter();
da.Fill(dt, RS);
// Declare the array variable.
object[] rowArray = new object[2];
rowArray[0] = 0;
rowArray[1] = null;
dt.Rows[0].ItemArray = rowArray;
this.cbLote.DataSource = dt.DefaultView;


NS



"Nuno Santos" <nunos7@[REMOVER]hotmail.com> wrote in message
news:
Gracias por responder,
Pero creo que no entiendo bien... hago el insert, pero despues al
hacer el datasource = ds se sobrepone al insert, cierto?

NS

"carlosmsr" wrote in message
news:
cbLote.Items.Insert(int index, object Item);

"Nuno Santos" wrote:

Hola grupo,

Tengo una combobox con dados de una tabla, pero quiero
que
el primer ítem del combo sea, por ejemplo: "-- Todos --", como puedo
hacer
para que el primer ítem de la combo sea el "--Todos --" y sólo
después
vengan los ítems de la tabla.

Gracias de antemano,

Esto es lo que tengo:

myDll.LotesClass plLotes = new myDll.LotesClass();



ADODB.Recordset RS = plLotes .GetListaLotes();

DataSet ds = new DataSet();

OleDbDataAdapter da = new OleDbDataAdapter();

da.Fill(ds, RS, "Lotes");



this.cbLote.DataSource = ds;



this.cbLote.DataSource = ds.Tables["Lotes"].DefaultView;

this.cbLote.DisplayMember = "NumLote";

this.cbLote.ValueMember = "IdLote";

this.cbLote.FormatString = "0000";

plLotes = null;

















Respuesta Responder a este mensaje
#9 Nuno Santos
25/07/2007 - 09:59 | Informe spam
Perdona pero me podrias decir como quedaria mi código con tu sugestión.

NS

"[Juanjo]" wrote in message
news:
Yo que lo que hago normalmentes es:
1. LLeno el DataTable que contendra los datos del combo (como lo haces tu)
2. Inserto una nueva fila en la primera posicion del datatable.

Creo que si primero insertas la fila y el metodo Fill esta configurado por
defecto con
ClearBeforeFill=true te borra todo lo que tienes en el datatable por lo
que pierdes la
primera fila.

Un saludo.



"Nuno Santos" <nunos7@[REMOVER]hotmail.com> escribió en el mensaje
news:
Lo que hice:
DataTable dt = new DataTable();
DataRow dr = dt.NewRow();
dt.Rows.Add(dr);
OleDbDataAdapter da = new OleDbDataAdapter();
da.Fill(dt, RS);
// Declare the array variable.
object[] rowArray = new object[2];
rowArray[0] = 0;
rowArray[1] = null;
dt.Rows[0].ItemArray = rowArray;
this.cbLote.DataSource = dt.DefaultView;


NS



"Nuno Santos" <nunos7@[REMOVER]hotmail.com> wrote in message
news:
Gracias por responder,
Pero creo que no entiendo bien... hago el insert, pero despues al
hacer el datasource = ds se sobrepone al insert, cierto?

NS

"carlosmsr" wrote in message
news:
cbLote.Items.Insert(int index, object Item);

"Nuno Santos" wrote:

Hola grupo,

Tengo una combobox con dados de una tabla, pero quiero
que
el primer ítem del combo sea, por ejemplo: "-- Todos --", como puedo
hacer
para que el primer ítem de la combo sea el "--Todos --" y sólo
después
vengan los ítems de la tabla.

Gracias de antemano,

Esto es lo que tengo:

myDll.LotesClass plLotes = new myDll.LotesClass();



ADODB.Recordset RS = plLotes .GetListaLotes();

DataSet ds = new DataSet();

OleDbDataAdapter da = new OleDbDataAdapter();

da.Fill(ds, RS, "Lotes");



this.cbLote.DataSource = ds;



this.cbLote.DataSource = ds.Tables["Lotes"].DefaultView;

this.cbLote.DisplayMember = "NumLote";

this.cbLote.ValueMember = "IdLote";

this.cbLote.FormatString = "0000";

plLotes = null;

















Respuesta Responder a este mensaje
#10 [Juanjo]
25/07/2007 - 17:44 | Informe spam
Mas o menos asi ( no lo he compilado jeje):

ADODB.Recordset RS = plLotes .GetListaLotes();
DataSet ds = new DataSet();
OleDbDataAdapter da = new OleDbDataAdapter();
da.Fill(ds, RS, "Lotes");


/*ESTO ES LO QUE YO PONDIRA*/
DataRow fila = new ds.Tables["Lotes"].NewRow();
fila["IdLote"]=0; //O un calor que tu sepas que no es un valor de la tabla
fila["NumLote"]="Elige un lote";
ds.Tables["Lotes"].Rows.InsertAt(fila,0); //Lo insertas en la primera
posicion
/*FIN*/

this.cbLote.DataSource = ds;
this.cbLote.DataSource = ds.Tables["Lotes"].DefaultView;
this.cbLote.DisplayMember = "NumLote";
this.cbLote.ValueMember = "IdLote";
this.cbLote.FormatString = "0000";
plLotes = null;

NOTA: Es posible que te de error, si en la consulta que haces pones "select
* from Lotes"...
por lo que tendras que completar cada uno de los campos de la fila con
valores o
hacer "select IdLote, NumLote from Lotes".

Espero haberme explicado bien. Un saludo.

"Nuno Santos" <nunos7@[REMOVER]hotmail.com> escribió en el mensaje
news:
Perdona pero me podrias decir como quedaria mi código con tu sugestión.

NS

"[Juanjo]" wrote in message
news:
Yo que lo que hago normalmentes es:
1. LLeno el DataTable que contendra los datos del combo (como lo haces
tu)
2. Inserto una nueva fila en la primera posicion del datatable.

Creo que si primero insertas la fila y el metodo Fill esta configurado
por defecto con
ClearBeforeFill=true te borra todo lo que tienes en el datatable por lo
que pierdes la
primera fila.

Un saludo.



"Nuno Santos" <nunos7@[REMOVER]hotmail.com> escribió en el mensaje
news:
Lo que hice:
DataTable dt = new DataTable();
DataRow dr = dt.NewRow();
dt.Rows.Add(dr);
OleDbDataAdapter da = new OleDbDataAdapter();
da.Fill(dt, RS);
// Declare the array variable.
object[] rowArray = new object[2];
rowArray[0] = 0;
rowArray[1] = null;
dt.Rows[0].ItemArray = rowArray;
this.cbLote.DataSource = dt.DefaultView;


NS



"Nuno Santos" <nunos7@[REMOVER]hotmail.com> wrote in message
news:
Gracias por responder,
Pero creo que no entiendo bien... hago el insert, pero despues al
hacer el datasource = ds se sobrepone al insert, cierto?

NS

"carlosmsr" wrote in message
news:
cbLote.Items.Insert(int index, object Item);

"Nuno Santos" wrote:

Hola grupo,

Tengo una combobox con dados de una tabla, pero
quiero que
el primer ítem del combo sea, por ejemplo: "-- Todos --", como puedo
hacer
para que el primer ítem de la combo sea el "--Todos --" y sólo
después
vengan los ítems de la tabla.

Gracias de antemano,

Esto es lo que tengo:

myDll.LotesClass plLotes = new myDll.LotesClass();



ADODB.Recordset RS = plLotes .GetListaLotes();

DataSet ds = new DataSet();

OleDbDataAdapter da = new OleDbDataAdapter();

da.Fill(ds, RS, "Lotes");



this.cbLote.DataSource = ds;



this.cbLote.DataSource = ds.Tables["Lotes"].DefaultView;

this.cbLote.DisplayMember = "NumLote";

this.cbLote.ValueMember = "IdLote";

this.cbLote.FormatString = "0000";

plLotes = null;





















Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida