domingo, 6 de enero de 2008

Añadir item a un combo o utiliza el Intellisense más.

A veces la lógica de la programación con .NET me sorprende. Tiene sentido pero me sorprende.

El que aquí escribe lleva programando suficientes años para haber pasado por varias metodologías empezando por la PPE (Programación Plato de Espaguetis) basada en Goto y Gosub, la dureza del ensamblador con GEM, pasando por los predicados del PROLOG, el lenguaje estructurado del Turbo Pascal, la programación basada en eventos del LINGO, la exasperante simpleza del HTML (que NO es un lenguaje de programación), el tostón retorcido del Java Script y el ActionScript, o el indescriptible XSLT (que ES un lenguaje de programación).

Si ya con el ASP clásico siempre tuve la sensación que me perdía gran parte de la potencia de las capacidades, con .NET tengo la certeza (y más ahora con la certificación) que es un enorme mundo con una lógica muy especial en relación a mis anteriores experiencias.

Todo esto viene a cuento de que estoy haciendo una pequeña aplicación para practicar parte del material que tengo que preparar para el examen de Febrero, y estoy centrado en un menú desplegable.

En la anterior entrada daba un ejemplo del cómo definir qué columnas de un origen de datos para el valor y el texto de un ítem del dropDownList. Obviamente el paso siguiente era incluir una nueva option al principio del combo que tenga como valor el “0” y el texto “Haga una selección”.

Y allí voy yo tan contento diciéndome a mí mismo –esto está chupao, si los ítem son una colección pues le añado un ítem en la posición 0 y san se ha acabao-

dropDownList.DataSource = dataTable
dropDownList.DataValueField = "campo1"
dropDownList.DataTextField = "campo2"
dropDownList.DataBind()

dropDownList.Items.Insert(0,”Haga una selección”)

… pues no. De esta manera efectivamente inserto en la posición 0 la option con el texto elegido, pero también me introduce la cadena como valor. Dita sea, no encuentro la forma de poder introducir un ítem con tres parámetros. Es decir, la posición para insertarlo, el valor y el texto.

Ale, a tirar de San Google, y así me encuentro en algún ejemplo la lógica aplastante a la que me tengo que ir acostumbrando y que no es otra que en .NET TODO es un objeto.

Si invoco el Intellisense me informa que el método Insert tiene dos sobrecargas. Una en donde el ítem es una cadena de texto, como lo hago arriba, y una segunda en donde me admite un entrada tipo ListItem.

La declaración del New de un ListItem tiene varias sobrecargas pero me interesa la tercera que me permite introducir el campo texto y el campo valor.

Y así, y para terminar este largo post, está es una forma elegante de introducir el ítem al principio del combo con los datos del texto y el valor que quiero.

dropDownList.Items.Insert(0, New ListItem("Sin restricción por tipo de matricula", 0))

1 comentario:

Anónimo dijo...

Objetos, siempre objetos, querido padawan... :P

Julio