Asistente o codigo ? ;).. ->codigo!.
objetivo: Que en un desplegable se muestren datos de una BD. Los datos se extraen desde procedimientos almacenados y se almacenan en DataTable.
Pagina donde se encuentra el desplegable. Crearemos una funcion para el deplegable. Esta misma la podremos llamar por ejemplo desde el constructor.
private void RellenarComboBox(){
categoria catCAD=new categoria();
nombCombo.DataSource = catCAD.ObtenerDatosDesplegable();
nombCombo.DisplayMember = "nombre";
cmb.ValueMember = "id";
}
La funcion ObtenerDesplegable, devolverá un dataset con los datos de la BD.
Siempre que queramos que se cargue algo de la bd, tanto si es un datagrid, como si es un desplegable pondremos suNombre.DataSource.
Las propiedades DisplayMember, este es el nombre que queremo que muestre el desplegable y ValueMember, es el nombre que queremos que se almacene cuando se seleccione una opcion del desplegable. Por ejemplo selecciono del desplegable Software y se almacena su id q es el 3.
La funcion ObtenerDatosDesplegable, la tengo en otra capa que gestiona toda la conexion a la Bd.
System.Data
System.Data.SqlClient
//deberia tener un try catch.
public DataTable desplegableCategorias()
{
DataTable dt = new DataTable();
cnn = new SqlConnection(conexion);
da = new SqlDataAdapter("desplegableCategorias", cnn);
da.SelectCommand.CommandType = CommandType.StoredProcedure;
cnn.Open();
da.Fill(dt);
return dt;
}
Ejemplo de procedimiento almacenado.
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE desplegableCategorias
AS
BEGIN
SET NOCOUNT ON;
SELECT idCategoria, nombre from categoria;
END
GO
QUE AL SELECCIONAR UNA OPCION DEL DESPLEGABLE SE QUEDE MARCADA.
Con este apartado lo que se consigue es que si selecciono del desplegable Software, se quede marcado Software y no el primero de la lista.
Hago doble click sobre el desplegable y pongo el siguiente codigo.
if (comboBoxCategorias.SelectedIndex != -1)
comboBoxCategorias.Text = comboBoxCategorias.SelectedValue.ToString();
NO MODIFICAR DATOS DEL DESPLEGABLE
Para que el usuario no pueda escribir en el desplegable, seleccionamos el desplegable y en las propiedades ponemos. DropDownStyle: DropDownList
No hay comentarios:
Publicar un comentario