ASP.NET - Problema DropDownList al seleccionar valor

 
Vista:
sin imagen de perfil
Val: 1
Ha aumentado su posición en 25 puestos en ASP.NET (en relación al último mes)
Gráfica de ASP.NET

Problema DropDownList al seleccionar valor

Publicado por Jose (1 intervención) el 27/02/2018 01:17:41
Estoy desarollando una página web en ASP.NET.

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

1
2
3
4
5
<!— 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:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<%@ Page Title="" Language="C#" MasterPageFile="~/Pages/Master/MasterPage.master" 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_SelectedIndexChanged" 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:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
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("User2Search");
    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("User2Search");
            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("User2Search");
    }
 
    protected void CmbUsers_SelectedIndexChanged(object sender, EventArgs e)
    {
        int index = CmbUsers.SelectedIndex;
        if (index == 0) { ConfigurationManager.AppSettings.Set("User2Search", "Coordinator"); }
        else if (index == 1) { ConfigurationManager.AppSettings.Set("User2Search", "Administrator"); }
        else if (index == 2) { ConfigurationManager.AppSettings.Set("User2Search", "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 ???
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder