powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Как из динамически определяемого списка значений получить выбранное значение?
7 сообщений из 7, страница 1 из 1
Как из динамически определяемого списка значений получить выбранное значение?
    #38804601
AspUser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день! Задача: по выбору значения из одного списка определить доступные значения для выбора в другом списке, потом выбрать из другого списка значение для сохранения его в базе. Столкнулся со следующей проблемой, не получается получить выбранное значение из второго списка т.к. страница перегружается до момента где я пытаюсь получать значение, соответственно выбор утерян. Помогите построить решение данной задачи.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm2.aspx.cs" Inherits="Boks34.Pages.WebForm2" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
        <div>
            Варианты настроек:
    <asp:DropDownList ID="lstSetting" ViewStateMode="Disabled" AutoPostBack="true" SelectMethod="GetSetting" OnSelectedIndexChanged="lstSetting_SelectedIndexChanged" runat="server"></asp:DropDownList>
            Доступные значения:
    <asp:DropDownList ID="lstValues" ViewStateMode="Disabled" runat="server"></asp:DropDownList>
            <asp:Button ID="btnGetValueSelected" runat="server" OnClick="btnGetValueSelected_Click" Text="Получить результат" />
        </div>
    </form>
</body>
</html>



Код: c#
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.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace Boks34.Pages
{
    public partial class WebForm2 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }

        public string[] GetSetting()
        {
            string[] st = { "Пусто", "Настройка1", "Настройка2" };
            return st;
        }

        public string[] GetValuesVar1()
        {
            string[] st = { "для настройки 1 значение А", "для настройки 1 значение Б" };
            return st;
        }

        public string[] GetValuesVar2()
        {
            string[] st = { "для настройки 2 значение А", "для настройки 2 значение Б" };
            return st;
        }

        protected void btnGetValueSelected_Click(object sender, EventArgs e)
        {
            string rez = lstValues.SelectedValue;
            Response.Write("Выбрана настройка " + rez);
        }

        protected void lstSetting_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (lstSetting.SelectedValue == "Настройка1")
            {
                lstValues.SelectMethod = "GetValuesVar1";
                lstValues.DataBind();
            }
            if (lstSetting.SelectedValue == "Настройка2")
            {
                lstValues.SelectMethod = "GetValuesVar2";
                lstValues.DataBind();
            }
        }

    }
}
...
Рейтинг: 0 / 0
Как из динамически определяемого списка значений получить выбранное значение?
    #38805595
Calabonga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AspUser,


Такое ощущение, что ViewState отключен у контролов, либо у страницы, либо в конфиге у всех страниц. Если состояние не сохраняется - ищи состояние! :)
...
Рейтинг: 0 / 0
Как из динамически определяемого списка значений получить выбранное значение?
    #38805729
AspUser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
да не в состоянии дело, просто кнопка Получить результат делает обратную отправку и соответственно второй список(которому я присваивал SelectMethod ) обнуляестся, точнее перезаполняется заново и соответственно всегда получить(lstValues.SelectedValue) можно только первое значение(которым заполнился список)
...
Рейтинг: 0 / 0
Как из динамически определяемого списка значений получить выбранное значение?
    #38805918
carrotik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AspUser,

.. если пишете на веб-формах, то почему бы не использовать классический подход для веб-форм: включить ViewState, первый дроп-даун инициализоровать в Page_Load (не забывая об if (!Page.IsPostBack) ), подсунув ваш список ему в качестве .DataSource, а потом .DataBind() .... ?? .. или это уже не модно?
...
Рейтинг: 0 / 0
Как из динамически определяемого списка значений получить выбранное значение?
    #38806414
AspUser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
перепробовал массу вариантов , ну не получается, видать я что-то не понимаю....
Первый список у меня определен перечень , а вот для второго списка устанавливается перечень исходя из выбора в первом.
Необходимо ViewStateMode="Disabled" для вторго списка устанавливать, иначе получаю вот такую ошибку:

Сбой при загрузке состояния отображения. Дерево элементов управления, в которое загружается это состояние отображения, должно соответствовать дереву элементов управления, использованному для сохранения состояния отображения при предыдущем запросе. Например, при динамическом добавлении элементов управления те элементы управления, которые были добавлены при обратной передаче, должны по типу и положению соответствовать элементам управления, добавленным при исходном запросе.

для первого списка ViewStateMode не какой роли не играет.
...
Рейтинг: 0 / 0
Как из динамически определяемого списка значений получить выбранное значение?
    #38806543
carrotik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AspUser,

.. я веб-формы на vb.net писал, поэтому, может что-то и не совсем по феншую, но вот так у меня работает

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
<div>
    
            Варианты настроек:
    <asp:DropDownList ID="lstSetting" AutoPostBack="true" OnSelectedIndexChanged="lstSetting_SelectedIndexChanged" runat="server"></asp:DropDownList>
            Доступные значения:
    <asp:DropDownList ID="lstValues" runat="server"></asp:DropDownList>
    <asp:Button ID="btnGetValueSelected" runat="server" OnClick="btnGetValueSelected_Click" Text="Получить результат" />
        
    </div>



Код: c#
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.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class TestingC_Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack) { 
        var FirstList = GetSetting();
        lstSetting.DataSource = FirstList;
        lstSetting.DataBind();
        }
    }

    public string[] GetSetting()
    {
        string[] st = { "Пусто", "Настройка1", "Настройка2" };
        return st;
    }

    public string[] GetValuesVar1()
    {
        string[] st = { "для настройки 1 значение А", "для настройки 1 значение Б" };
        return st;
    }

    public string[] GetValuesVar2()
    {
        string[] st = { "для настройки 2 значение А", "для настройки 2 значение Б" };
        return st;
    }

    protected void btnGetValueSelected_Click(object sender, EventArgs e)
    {
        string rez = lstValues.SelectedValue;
        Response.Write("Выбрана настройка " + rez);
    }

    protected void lstSetting_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (lstSetting.SelectedValue == "Настройка1")
        {
            lstValues.DataSource = GetValuesVar1();
            lstValues.DataBind();
        }
        if (lstSetting.SelectedValue == "Настройка2")
        {
            lstValues.DataSource = GetValuesVar2();
            lstValues.DataBind();
        }
    }
}
...
Рейтинг: 0 / 0
Как из динамически определяемого списка значений получить выбранное значение?
    #38806704
AspUser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо! помогло благодаря вашему коду разобрался!
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Как из динамически определяемого списка значений получить выбранное значение?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]