Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Как из динамически определяемого списка значений получить выбранное значение? / 7 сообщений из 7, страница 1 из 1
13.11.2014, 11:56
    #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
14.11.2014, 00:14
    #38805595
Calabonga
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как из динамически определяемого списка значений получить выбранное значение?
AspUser,


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

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

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

для первого списка ViewStateMode не какой роли не играет.
...
Рейтинг: 0 / 0
14.11.2014, 15:52
    #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
14.11.2014, 17:02
    #38806704
AspUser
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как из динамически определяемого списка значений получить выбранное значение?
Спасибо! помогло благодаря вашему коду разобрался!
...
Рейтинг: 0 / 0
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Как из динамически определяемого списка значений получить выбранное значение? / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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