miércoles, 11 de abril de 2007

.net Desplegables desde Procedimientos Almacenados

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
palyginti kainas