Раскрывающийся список в значении главной страницы не обновляется после выбора нового - PullRequest
3 голосов
/ 30 марта 2011

Мне нужна помощь в решении следующей проблемы. У меня есть выпадающий список на моей главной странице. Он имеет источник данных SQL, из которого он загружает значения компаний. В зависимости от того, какое значение (компания) выбрано, оно показывает это значение в метке на другой странице. Находящийся на главной странице ddl все еще виден и должен отображать выбранное значение, которое он делает при первом выборе значения. Но когда я выбираю другое значение в ddl, оно показывает значение, выбранное 1-м, и так далее. Так что не обновляется или что-то. Мой код:

Это обработчик события onselectedIndexChanged:

protected void DropDownListType_SelectedIndexChanged(object sender, EventArgs e)
    {           
        String input1 = DropDownListType.Text;
        String input2 = DropDownListType.SelectedValue;
        String url = "~/test.aspx?pcompany="+input1;

        DropDownListType.SelectedValue = input2;

        Session["Company"] = input2;

        Response.Redirect(url);

    }

и это код, который я использую в методе Page_load с главной страницы:

if (Session["Company"] != null)
{
    DropDownListType.SelectedValue = (String)Session["Company"];
}

Если я удаляю этот последний фрагмент кода из моего метода page_load, он обновляет метку значением на перенаправленной странице, но сбрасывает мой ddl на значение по умолчанию вместо того, чтобы сохранять его равным 4, когда выбрано значение 4.

Надеюсь, это вам всем понятно. Любая помощь приветствуется. Ты заранее.

Ответы [ 3 ]

3 голосов
/ 30 марта 2011

попробуйте установить значение метки в методе PreRender (). Проблема у вас в жизненном цикле страницы. Я бы изменил ваш метод OnLoad, чтобы использовать

if(!IsPostBack) {
    if (Session["Company"] != null) 
    {
        DropDownListType.SelectedValue = (String)Session["Company"];
    }
}

Таким образом, вы устанавливаете его только один раз, когда страница загружается, и с этого момента на странице будет автоматически устанавливаться выбранное значение с помощью viewstate.

0 голосов
/ 30 марта 2011

просто установите для свойства AutoPostback DropDownList значение true, и тогда оно будет работать. Это связано с тем, что в противном случае onselectedIndexChanged будет вызываться только для PostBack из кнопки или любого другого поля. А также, как сказано выше, используйте этот код:

if(!IsPostBack) {
    if (Session["Company"] != null)
    {
        DropDownListType.SelectedValue = (String)Session["Company"];
    }
}
0 голосов
/ 30 марта 2011

Событие Load наступает до события SelectedIndexChanged, поэтому оно еще не настроено в Session.

См. Жизненный цикл страницы ASP.NET

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...