Foros del Web » Programando para Internet » ASPX (.net) »

Recuperar valor de dropdownlist

Estas en el tema de Recuperar valor de dropdownlist en el foro de ASPX (.net) en Foros del Web. Hola a todos. Estoy haciendo una aplicación web y tengo un problema que juraria que nunca me habia pasado. Hace bastante tiempo que no trabajo ...
  #1 (permalink)  
Antiguo 20/08/2011, 07:16
 
Fecha de Ingreso: febrero-2009
Mensajes: 472
Antigüedad: 15 años, 2 meses
Puntos: 14
Recuperar valor de dropdownlist

Hola a todos. Estoy haciendo una aplicación web y tengo un problema que juraria que nunca me habia pasado. Hace bastante tiempo que no trabajo con .NET, la verdad que creo que es una duda muy simple, busque por el foro pero no encontre nada. Bueno el tema es el siguiente.
Tengo un dropdownlist y lo que quiero es selecionar uno y borrarlo. El tema es que me coge siempre el primero, el primero es un campo vacio que yo pongo a mano, el resto de los valores del dropdownlist los cojo de una base de datos, pero selecione lo que selecione cuando le doy al boton elminiar, siempre me coge el primer campo.
Bueno a ver si con codigo se entiende mejor

Con esta funcion cargo el dropdownlist
Código ASP:
Ver original
  1. Private Sub cargardatos()
  2.         Dim ds As New DataSet
  3.         Dim adaptador As New SqlDataAdapter
  4.  
  5.         datos.Items.Clear()
  6.         cnn.Open()
  7.         adaptador.SelectCommand = cmdcargardatos
  8.         cmdcargardatos.ExecuteNonQuery()
  9.         adaptador.Fill(ds, "datos")
  10.         cnn.Close()
  11.         Me.datos.DataSource = ds
  12.         Me.datos.DataValueField = "id"
  13.         Me.datos.DataTextField = "texto"
  14.         Me.datos.DataBind()
  15.  
  16.         Me.datos.Items.Insert(0, New ListItem("Selecione un dato", 0))
  17.  
  18.         'limpiamos el dataset
  19.         ds.Tables.Clear()
  20.     End Sub

y aqui el codigo del boton eliminar
Código ASP:
Ver original
  1. Protected Sub eliminar_Click(ByVal sender As Object, ByVal e As EventArgs) Handles eliminar.Click
  2.         If datos.SelectedValue = 0 Then
  3.             MsgBox("No has selecionado ningun dato", MsgBoxStyle.Information)
  4.             Exit Sub
  5.         End If
  6.         If MsgBox("Va a borrar un dato importante. ¿Desea continuar?", MsgBoxStyle.YesNo) = MsgBoxResult.Yes Then
  7.             cnn.Open()
  8.             With cmdeliminardato
  9.                 .Parameters("@id").Value = datos.SelectedValue
  10.                 .ExecuteNonQuery()
  11.             End With
  12.             cnn.Close()
  13.  
  14.             'Vuelvo a llamar a la funcion cargardatos
  15.             cargardatos()
  16.         End If
  17.     End Sub

Y tengo otra pequeña duda, la funcion cargardatos() la llamo en el load de la pagina, si os dais cuenta la vuelvo a llamar cada vez que borro un dato. No hay alguna manera de volver a recargar la pagina? y asi me ahorro estar cada poco llamando a esa funcion. Por ejemplo el elemento dropdownlist tiene la propiedad autopostback, el elemento boton no tiene algo parecido??

Muchisimas gracias a todos por adelantado.

Un cordial saludo
Pinty
  #2 (permalink)  
Antiguo 21/08/2011, 10:32
Avatar de jaullo  
Fecha de Ingreso: abril-2009
Mensajes: 994
Antigüedad: 15 años
Puntos: 30
Respuesta: Recuperar valor de dropdownlist

Hola,

El punto es que te toma siempre el primer dato porque al estar cargando en el load la pagina siempre volvera a recargar el dropdownlist. Lo que debes hacer es colocar el cargardatos() en load de la siguiente forma:

If Not IsPostback Then
cargardatos()
End If

Eso te soluciona todo.
Ahora respecto al boton, no necesitas el AutoPostback, ya que por defecto el boton siempre hará una llamada al servidor ejecutando el postback, por tanto una vez que el proceso de eliminar el datos se complete al llamar a la funcion volvera a recargar los datos.

Por ultimo un consejo, veo que estas utilizando el MsgBox que pertenece a la clase MessageBox de Windows Form (A menos que sea algo personalizado). No hagas esto, no debes usar controles de Windows Forms en un ambiente web, te causará muchos problemas. De echo ahora que estas en tu equipo veras que funciona pero cuando debas llevarlo a un servidor a produccion veras que el sistema simplemente falla. Por favor, cambialo por un Javascript o un Jquery para mostrar los mensajes.

Saludos,

Jason Ulloa
Microsoft Community Contributor
__________________
http://geekswithblogs.net/jaullo/Default.aspx
Si te he ayudado regalame Karma positivo!!!
  #3 (permalink)  
Antiguo 22/08/2011, 08:04
 
Fecha de Ingreso: febrero-2009
Mensajes: 472
Antigüedad: 15 años, 2 meses
Puntos: 14
Respuesta: Recuperar valor de dropdownlist

Hola jaullo. En primer lugar y antes de nada muchisimas gracias por tu ayuda, el dropdownlist funciona perfectamente y al recargar la pagina los datos elminados ya no aparecen.
Con respecto a el msgbox. No te entiendo bien. Que quieres decir que no lo puedo usar?? es decir que luego la gente no va a poder ver el mensaje en pantalla??, si es por lo que tu me dices q es de windows, que mas elementos me daran problemas?? botones, labels, dropdownlist... Hay algun elemento mas que me de problemas?? y hay alguna forma de saber cuales son?? Es que no me gustaria acabar la web y darme cuenta de que lo tengo q cambiar todo.

Muchas gracias por tu ayuda, y sobre todo por tus avisos, q seguro q me ahorran mas de un disgusto

Un abrazo
Pinty
  #4 (permalink)  
Antiguo 22/08/2011, 18:12
Avatar de jaullo  
Fecha de Ingreso: abril-2009
Mensajes: 994
Antigüedad: 15 años
Puntos: 30
Respuesta: Recuperar valor de dropdownlist

Hola,

Siendo sincero, es correcto, no lo puedes utilizar. Si analisas bien la clase y la dll que estan por detras del Msgbox te daras cuenta que pertence a la clase MessageBox la cual a su vez pertenece a Windows Forms.

Tal como te comente en tu equipo que es el de desarrollo te funcionará a la perfección porque estas interactuando con todos los elementos directamente en tu equipo, pero no asi cuando lo tengas en un servidor.

Cuando la aplicacion este en produccion veras que la gente no podra ver los mensajes sino que la aplicacion dejara de funcionar y esa no es la idea.

Lo recomendable aqui es que siempre utilices los controles del ToolBox de VS o algun control de jquery o Javascript que no te darán problemas. El problema mas que todo siempre se comete con el messagebox ya que asp.net por defecto no tiene ningun control de este tipo y pues bueno buscamos la forma de sustituirlo.

En cuanto a darte cuenta es un poco dificil, generalmente en tu pc no notaras error sino hasta que lo pongas en produccion. Pero nuevamente te digo, utiliza los controles del Toolbox y no habran problemas.

Para ayudarte un poco más. Te dejo un post con varios ejemplos de la forma correcta de mostrar mensajes al usuario utilizando javascript.

http://ltuttini.blogspot.com/2010/04...firm-como.html

Buena suerte.

Saludos,

Jason Ulloa
Microsoft Community Contributor
__________________
http://geekswithblogs.net/jaullo/Default.aspx
Si te he ayudado regalame Karma positivo!!!
  #5 (permalink)  
Antiguo 22/08/2011, 18:36
 
Fecha de Ingreso: febrero-2011
Mensajes: 5
Antigüedad: 13 años, 3 meses
Puntos: 0
Respuesta: Recuperar valor de dropdownlist

Si es cierto lo que te dice jaullo, yo tube un problema parecido hace tiempo, estube trabajando con cascadedorpdown y ajax, esto te facilita mucho las cosas pues no es necesario que la pagina se cargue al realizar un cambio.

Etiquetas: dropdownlist, recuperar, aspx
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 07:37.