image
Inicio » Foros » ASP.NET

Foro sobre ASP.NET

Problema DropDownList

Volver al foro | Responder | Añadir nuevo tema


De: Joseluislo12
Fecha: 27/02/2018
Mensaje:

Estoy desarollando una página web en ASP.NET.

Consta de una página maestra la cual tiene la
siguiente línea:

<!— Contenido Principal —>
<div id="content">
<asp:ContentPlaceHolder
ID="ContentPlaceHolder1" runat="server">
</asp:ContentPlaceHolder>
</div>
Esto con el fin de que cada página creada
comparta la información de menús y demás cosas,
y utilizo este ContentPlaceHolder para agregar
la información respectiva de cada página.



Tengo una página donde estoy utilizando un
DropDownList, acá el código del diseño:

<%@ Page Title="" Language="C#"
MasterPageFile="~/Pages/Master/MasterPage.maste
r" AutoEventWireup="true" CodeFile="Users-
Search.aspx.cs"
Inherits="Pages_Users_Users_Search" %>

<asp:Content ID="Content1"
ContentPlaceHolderID="ContentPlaceHolder1"
Runat="Server">


<div>
<h2>Seleccione una opción</h2>
<asp:DropDownList ID="CmbUsers"
runat="server" AutoPostBack="True"
OnSelectedIndexChanged="CmbUsers_SelectedIndexC
hanged" ViewStateMode="Enabled">
</asp:DropDownList>
</div>

<div>
<asp:Button ID="BtnSearch"
runat="server" Text="Busar"
OnClick="BtnSearch_Click" />
</div>
</asp:Content>

Y el código en C# es el siguiente:

using System;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class Pages_Users_Users_Search :
System.Web.UI.Page
{
public string user =

ConfigurationManager.AppSettings.Get("User");
public string search =
ConfigurationManager.AppSettings.Get("User2Sear
ch");
public ListItem Coords = new
ListItem("Coordinadores", "0");
public ListItem Admins = new
ListItem("Administradores", "1");
public ListItem Users = new
ListItem("Usuarios", "2");

protected void Page_Load(object sender,
EventArgs e)
{
switch (user)
{
case "Coordinator":
CmbUsers.Items.Clear();
CmbUsers.Items.Add(Coords);
CmbUsers.Items.Add(Admins);
CmbUsers.Items.Add(Users);
break;
case "Administrator":
CmbUsers.Items.Clear();
CmbUsers.Items.Add(Users);
break;
}

if (!IsPostBack)
{
}
else
{
search =
ConfigurationManager.AppSettings.Get("User2Sear
ch");
switch (search)
{
case "Coordinator":
CmbUsers.SelectedIndex = 0;
break;
case "Administrator":
CmbUsers.SelectedIndex = 1;
break;
case "User":
CmbUsers.SelectedIndex = 2;
break;
}
}
}

protected void BtnSearch_Click(object
sender, EventArgs e)
{
string CodeUserSearch =
TxtCode.Text.Trim(), TypeUserSearch =
ConfigurationManager.AppSettings.Get("User2Sear
ch");
}

protected void
CmbUsers_SelectedIndexChanged(object sender,
EventArgs e)
{
int index = CmbUsers.SelectedIndex;
if (index == 0) {
ConfigurationManager.AppSettings.Set("User2Sear
ch", "Coordinator"); }
else if (index == 1) {
ConfigurationManager.AppSettings.Set("User2Sear
ch", "Administrator"); }
else if (index == 2) {
ConfigurationManager.AppSettings.Set("User2Sear
ch", "User"); }
}
}



Básicamente lo que hace es, según un dato de
una página anterior, cargar los datos en la
lista según corresponda.

Luego hay un botón que permite buscar en una DB
según el valor seleccionado en la lista. Para
eso es la variable "TypeUserSearch".

Inicialmente había igualado esa variable al
valor seleccionado en la lista, pero si no
hacía PostBack al cambiar el valor de la lista
el valor seleccionado era siempre el defecto.

Algo así como:

1. Cargar valores (V1, V2, V3, V4)

2. Valor inicial: V1

3. Seleccionar valor V2

4. Valor seleccionado V1

Siempre iba a tomar el primer valor si no se
hacía el PostBack. Así que le activé la opción
y seguía igual, entonces lo que hice fue que
después del PostBack guardaba el valor
seleccionado de la lista en una variable del
Web.Config, la variable "User2Search", y
después en el PageLoad si sucedía un PostBack,
cargaba el index de la lista según lo
necesitaba (para fines puramente estéticos, que
al recargar la página el usuario siguiera
viendo el valor que había seleccionado) y
después al oprimir el botón utilizaba la
variable guardada en el Web.Config. Todo
funcionaba correctamente y en todos los casos
que lo probé funcionaba correctamente.

Pero después de estar modificando otra página
totalmente diferente esto dejó de funcionar
(sin modificar nada a esta página) y ahora
siempre que regresa del PostBack vuelve a tomar
el valor por defecto y no cambia nunca.

Alguna forma de poder conservar el valor que el
usuario seleccionó después de que haga el
PostBack o poder tomar el valor sin tener que
hacer un PostBack ???


Volver al foro | Responder | Añadir nuevo tema

Quizás le interese:

WebEstilo.com no se hace responsable de las opiniones que los usuarios puedan verter en cualquiera de los foros existentes.

Si te solucionó el problema pulsa en G+1


Gracias!






Comparte



Última modificación:31 de Agosto de 2017. Spain - Espa�a.
© 1998-2004 por . Todos los derechos reservados.