ComboBox y DataSet

27/01/2006 - 12:06 por Oscar M | Informe spam
Hola a todos,

uno de mis formularios tiene un datagridview y 20 combobox para realizar
filtros a la selección.

Para rellenar la lista de los combobox (Cada uno de ellos con un campo de la
tabla) he creado un enlace a datos para cada uno de ellos, modificandoles
luego el SQL para hacer un Distinct de cada elemento.

Pero claro esto me ha creado en mi formulario 20 DataSet, 20 bindingsourcer
y 20 Tableadapter.

¿Hay alguna solución mas eficiente?

Muchas gracias.

Un saludo

Oscar M

PD: se ha perdido la estupenda costumbre del [POR FIN ES VIERNES] ???????
 

Leer las respuestas

#1 A.Poblacion
27/01/2006 - 19:55 | Informe spam
"Oscar M" wrote in message
news:%
uno de mis formularios tiene un datagridview y 20 combobox para realizar
filtros a la selección.

Para rellenar la lista de los combobox (Cada uno de ellos con un campo de
la tabla) he creado un enlace a datos para cada uno de ellos,
modificandoles luego el SQL para hacer un Distinct de cada elemento.

Pero claro esto me ha creado en mi formulario 20 DataSet, 20
bindingsourcer y 20 Tableadapter.

¿Hay alguna solución mas eficiente?



Es más eficiente cargarlos con un datareader, en lugar de un dataadapter
más un dataset. Si el formulario es Web, puedes poner el DataReader como
DataSource del combo. Si es un Winform, no puedes poner el datareader como
datasource, pero sí puedes escribir una pequeña subrutina que reciba como
argumentos el combo y el datareader y que haga un pequeño bucle leyendo el
datareader y metiendo cada linea en el combo. De esta manera te saltas un
paso respecto al dataadapter, ya que éste utiliza internamente un bucle
leyendo de un datareader para traer los datos al dataset, y luego el
databinding usa otro bucle para copiarlos del dataset al combo.

Si quieres añadir una optimización más, mete los 20 selects en un
procedimiento almacenado, ejecuta la llamada al procedimiento con un
ExecuteReader de un SqlCommand, y usa el método NextResult() del DataReader
para ir saltando de un resultado a otro. De esta forma haces una sola
llamada al servidor de base de datos, en lugar de 20.

Preguntas similares