Bienvenidos

Recuerda que tus comentarios son importantes y recuerda agradecer si te fue útil algun artículo publicado aquí.

L1f3 15 a D@nc3 Flo0r

viernes, 2 de enero de 2009

DropDownList en un gridview

Buen día programadores, en mi primer post del año 2009 les traigo algo bastante interesante muchas veces necesitado por nosotros y es el poner un DropDownList dentro de un gridView, ya había visto esto "tirando mucho código" pero que tal si les digo que pueden hacerlo sin "tirar" ni una sola línea de código?

Imaginen que tenemos una tabla en nuestra B.D. pero algunos de esos campos son los pk. de otras tablas a la cual la nuestra está relacionada. El ejemplo que les traigo es con una tabla de materias. Mi tabla de materias está relacionada a los cursos y a los profesores. Si cargamos la tabla directamente de la B.D. en el grid luciría así:



















El problema es que esto no es muy presentable para un cliente, el cliente preferiría que se viera así:


















Muchísimo mejor, no?

Entonces.. Cómo hacemos esto?

  • Lo primero que debemos hacer es hacer clic en la flecha de la esquina superior derecha del grid
  • Vas a Edit Columns
  • Seleccionas la columna que quieres cambiar
  • Haces click en "Convert to Template Field"
  • Sales de la pantallita de Fields del GridView
  • Vuelves a darle a la flechita de la esquina superior
  • Y esta vez haces clic en "Edit Templates"
  • En esa nueva flechita en la parte superior clickeas y seleccionas el campo con el que vas a trabajar
  • Entonces en la parte de ItemTemplate y de EditItemTemplate colocas un DropDownList
  • Ese DDL lo cargas con un objectDataSource que apunte a la tabla de "Profesores" o "Curso " en el caso del ejemplo
  • Y en la parte de EditDataBinding del componente seleccionas el campo de la tabla de Materias con el que se va a cargar, en mi caso "id_curso" y "id_profesor"


    Eso es todo, así el cliente entenderá más la pantalla y de seguro le gustara mucho más.

    Cheers!!

10 comentarios:

Ranma dijo...

exceleten esta muy bien echo gracias

Unknown dijo...

oye! muchísimas gracias, así como lo explicas parece extremadamente fácil. creo que es un posta muy claro y concreto. Nuevamente gracias.

ztiben dijo...

muchas gracias por la informacion .... tengo un problema con los DDL
..
Cuando estoy enviando los datos del DDl me sale un error =

"System.ArgumentOutOfRangeException: 'DropDownList1' has a SelectedValue which is invalid because it does not exist in the list of items."
No se q hacer llebo dias en ese error

Muchas Gracias :D

Blog de Tips Rápidos de Programación dijo...

Revisa si el valor que te esta cargando el gridview es un valor que se encuentre dentro de tu dropdownlist. Ese error se debe a que el valor no esta en tu lista y recuerda tambien que ese dropdownlist que va dentro del gridview tiene su datasource individual osea que cuidado si lo confundes con otro.

DFALVAREZR dijo...

muy buen aporte al mundo de la programación y a mi proyecto gracias ni en 15 minutos resolví mi problema thanks!

Unknown dijo...

muchas gracias por la alclaración... me sirvió super bien sin embargo tengo un problema y es que al gridview lo tengo enlazado a un datasource y en el mismo tengo querys de delete y update, el update me da un problema ya que al momento de poner el arguento por decir:

Update...
Set..
campo = @argumento
where...

me salta un error diciendo que no está definida la variable @argumento sin embargo el nombre de ese template es el mismo que tenia antes de cpnvertir la columna en plantilla.

Me podrían ayudar con esto, es para un proyecto final de semstere.

JianSyStyle dijo...

Hola Bendiciones:

Como accedo al valor seleccionado en el DropDown?
Tengo un Problema con ello, Atento a su respuesta.

Gracias

Blog de Tips Rápidos de Programación dijo...

Eso que necesitas lo haces con el método FindControl

aqui te dejo un link de este blog donde tienes un ejemplo de eso que necesitas: http://recuerdaprogramacionrapido.blogspot.com/2007/09/tomar-el-valor-de-objetos-dentro-de-un.html

y aqui esta la referencia de msdn:
http://msdn.microsoft.com/es-es/library/486wc64h(v=vs.80).aspx

Anónimo dijo...

Gracias!

Anónimo dijo...

drdd