Usuario
Mantener el elemento seleccionado de un DropDownList1 (cmbPuesto) al hacer clic en un boton

Pregunta
-
Hola buenas tardes:
Alguien podria apoyarme a resolver este problema:
Tengo una pagina web hecha en asp.net y vb 2005 en la cual deseo validar un usuario, para lo cual cuento con 2 textbox y un DropDownList (cmbPuesto) ok. Lo que deseo hacer es lo siguiente; el usuario que desee entrar debe colocar su nombre, puesto y password y dar clien en un boton (btnEntrar) y se enviaran los datos. Si envio los datos correspondientes al primer elemento seleccionado me envia un mensaje de bienvenido (solo es momentaneo) pero por el contrario si escojo el segundo elemento del DropDownList1 y los otros datos son correctos me envia "Usuario no valido" por que tengo entendido que la pagina se vuelve a cargar y envia el primer elemento. Se carga otra vez y nunca se envia el elemento que selecciono del DropDownList1, bueno si se envia pero siempre el primero.
Al seleccionar un elemnto del DropDownList1 realmente lo que quiero es mandar su valor no el texto que se ve.
Nota:El DropDownList1 lo lleno a traves de una dataset que esta en otra clase. Igualmente los datos se envian a otra clase que los valida.
Aqui dejo el codigo por si algo me quiere ayudar. Gracias
ME URGE RESOLVER ESTE PROBLEMA
Imports
CapaNegocioImports
System.DataPartial
Class _Default Inherits System.Web.UI.Page Dim objSesion As Sesion 'PARA EL FILTARDO DE DATos Private ds, ds2 As New DataSet 'para el indice del cmbbox Private variable, variable2 As Integer Dim itemText As String Dim varClave As String = String.Empty Protected Sub Page_Disposed(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.DisposedobjSesion =
Nothing End Sub Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.LoadobjSesion =
New Sesion Dim Objeto As Object Dim Row As DataRowcmbPuesto.Items.Clear()
Objeto = objSesion.CargarComboPuesto()
MsgBox(Objeto, MsgBoxStyle.Critical,
ds = Objeto
cmbPuesto.Items.Add(Row(1))
Next End IfDim Num As Integer
Dim dr As DataRowdr = ds.Tables(0).Rows(variable)
varClave = dr.Item(0)
objSesion.NOMBRE() = txtNombre.Text
objSesion.PASSWORD() = txtPassword.Text
objSesion.ID_PUESTO() = varClave
Num = objSesion.DatosSesion()
If Num = 1 ThenLabel4.Text =
"Bienvenido" ElseLabel4.Text =
"Usuario No Valido" End Ifvariable = cmbPuesto.SelectedItem.Value
End
Class
Todas las respuestas
-
Angsus Escribió: Hola buenas tardes:
Alguien podria apoyarme a resolver este problema:
Tengo una pagina web hecha en asp.net y vb 2005 en la cual deseo validar un usuario, para lo cual cuento con 2 textbox y un DropDownList (cmbPuesto) ok. Lo que deseo hacer es lo siguiente; el usuario que desee entrar debe colocar su nombre, puesto y password y dar clien en un boton (btnEntrar) y se enviaran los datos. Si envio los datos correspondientes al primer elemento seleccionado me envia un mensaje de bienvenido (solo es momentaneo) pero por el contrario si escojo el segundo elemento del DropDownList1 y los otros datos son correctos me envia "Usuario no valido" por que tengo entendido que la pagina se vuelve a cargar y envia el primer elemento. Se carga otra vez y nunca se envia el elemento que selecciono del DropDownList1, bueno si se envia pero siempre el primero.
Al seleccionar un elemnto del DropDownList1 realmente lo que quiero es mandar su valor no el texto que se ve.
Nota:El DropDownList1 lo lleno a traves de una dataset que esta en otra clase. Igualmente los datos se envian a otra clase que los valida.
Aqui dejo el codigo por si algo me quiere ayudar. Gracias
ME URGE RESOLVER ESTE PROBLEMA
Imports
Imports
System.DataPartial
Class _Default Inherits System.Web.UI.Page Dim objSesion As Sesion 'PARA EL FILTARDO DE DATos Private ds, ds2 As New DataSet 'para el indice del cmbbox Private variable, variable2 As Integer Dim itemText As String Dim varClave As String = String.Empty Protected Sub Page_Disposed(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.DisposedobjSesion =
Nothing End Sub Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.LoadobjSesion =
New Sesion Dim Objeto As Object Dim Row As DataRowcmbPuesto.Items.Clear()
Objeto = objSesion.CargarComboPuesto()
MsgBox(Objeto, MsgBoxStyle.Critical,
ds = Objeto
cmbPuesto.Items.Add(Row(1))
Next End IfDim Num As Integer
Dim dr As DataRowdr = ds.Tables(0).Rows(variable)
varClave = dr.Item(0)
objSesion.NOMBRE() = txtNombre.Text
objSesion.PASSWORD() = txtPassword.Text
objSesion.ID_PUESTO() = varClave
Num = objSesion.DatosSesion()
If Num = 1 ThenLabel4.Text =
"Bienvenido" ElseLabel4.Text =
"Usuario No Valido" End Ifvariable = cmbPuesto.SelectedItem.Value
End
ClassHola, a ver si puedo ayudar,
te recomiendo hacer el llenado del combo disponiendo de un datatable como fuente de datos de la siguiente forma.
Es importante ver que para poder consultar el "value" luego cuando se dispara el evento selectedindexchanged, debes indicar que campo de tu DataTable debe estar como Value.
Abajo dejo un código que muestra como hacerlo.
Bloque de códigodsDatos1.Tables(
"Employee").DefaultView.Sort = "LastName" Me._ddlAuthors.DataSource = dsDatos1.Tables("Employee") Me._ddlAuthors.DataTextField = "LastName" Me._ddlAuthors.DataValueField = "EmployeeID" Me._ddlAuthors.Visible = True Me._ddlAuthors.DataBind() Me._ddlAuthors.Items.Insert(0, "SELECCIONE") Me._ddlAuthors.SelectedIndex = 0No obstante si queres mantener la forma actual, sería de la siguiente forma, indicando donde dice row(x) el index de row que queres que poseea el value en el selectedindexchanged
Bloque de códigoMe
._ddlAuthors.Items.Add(new ListItem(row(0),row(x))Si te he podido ayudar, por favor no olvides marcar la solución dada como respuesta correcta.
Saludos,
-
Aun asi no me funciona. Sucede lo mismo. Cuando traigo los datos los coloco en el cmbpuesto de la sigueinte manera:
ds = Objeto
'Para insertar los datos del DataSet al combobox de Puestos For Each Row In ds.Tables(0).Rows 'la posicion 1 es el nombre y la 0 es el passwordcmbPuesto.Items.Add(Row(1))
Nextobjeto trae n dataset con los datos de la tabla de Puesto la cual tiene id_puesto, nombre_puesto y descripcion. Al agregar al cmbpuesto agrego el nombre de puesto y al seleccionar obtengo el value en row(0)
variable = cmbPuesto.SelectedItem.Value
el problema es cuando cambia de posicion se vuelve a cargar con todos los elementos y no se queda la posicion o el value del elemento que estaba seleccionado. Coloque en el page_load
la siguiente sentencia
If
Not IsPostBack ThenObjeto = objSesion.CargarComboPuesto() --- aqui llamo a una function que esta en otra clase. esta funcion me devuelve el dataset con los datos. Mi aplicacion es asi por que esta em tres capas
If Not TypeOf Objeto Is DataSet ThenMsgBox(Objeto, MsgBoxStyle.Critical,
"ERROR DE CONEXION") Exit Sub End Ifds = Objeto
'Para insertar los datos del DataSet al combobox de Puestos For Each Row In ds.Tables(0).Rows 'la posicion 1 es el nombre y la 0 es el passwordcmbPuesto.Items.Add(Row(1))
Next Dim dr As DataRowdr = ds.Tables(0).Rows(variable)
varClave = dr.Item(0)
end if
-
Hola, a ver si puedo ayudar,
te voy a dar un link a otro post, donde hay un ejemplo similar a lo que buscas, que funciona bien. Tal vez sería interesante que copies dicho ejemplo en un aspx nuevo, lo pruebes, y una vez que este funcionando compares las diferencias con la totalidad de tu código.
ver el post de 14 ene 2008, 4:10 de Fer Antivero, esta tanto el aspx como el código que va en la clase, y trabaja con la base de datos que viene por defecto en sqlserver Northwind:
http://forums.microsoft.com/msdn-es/ShowPost.aspx?PostID=2686190&SiteID=11
Si te sirvio, directamente vota en el otro post como correcta la respuesta.
Saludos,