DropDownList в UpdatePanel

у меня проблема.

В моем проекте я поместил выпадающий список в панели обновлений. Я хотел выбрать значение из выпадающего списка и использовать его в сеансе.

но что бы я ни делал, это всегда даст мне нулевое значение из-за того, что я не проверюВключить AutoPostBack ".и когда я сделаю это, он обновит страницу, так что это не то, что я хотел.

Как я могу решить эту проблему?

есть идеи...

Ответы на вопрос(4)

Решение Вопроса

Похоже, вы не используете функцию UpdatePanel должным образом. Если у вас есть UpdatePanel для обновления, когда дети запускают события, обновлять должна только UpdatePanel, а не вся страница. Код ниже, похоже, ведет себя подобно тому, что вы ищете. При изменении раскрывающегося списка только сервер обновлений отправляет обратно на сервер, и когда вы обновляете страницу, вы можете получить значение из сеанса.

ASPX-код


    
    
    
        Current Time: <br>
        Session Value: <br>
        <br>
        
            
                
                    Select One
                    Maybe
                    Yes
                
            
            
                
            
        
    

Код позади

    protected void Page_Load(object sender, EventArgs e)
    {
        this.lblTime.Text = DateTime.Now.ToShortTimeString();
        if (Session["MyValue"] != null) 
            this.lblSessionValue.Text = Session["MyValue"].ToString();
    }

    protected void ddlMyList_SelectedIndexChanged(object sender, EventArgs e)
    {
        Session.Remove("MyValue");
        Session.Add("MyValue", this.ddlMyList.SelectedValue);
    }
 Yoosaf Abdulla11 дек. 2012 г., 21:56
@RSolberg: Ты спас мой день !!!
 iersoy10 авг. 2009 г., 22:44
Теперь я нашел способ, как решить эту проблему, я думаю. Как я уже сказал, я динамически вызывал 7 файлов ascx в updatepanel.if я использую If (IsPostBack) Тогда .... Конец Если возможно, я смогу заставить его работать
 RSolberg10 авг. 2009 г., 23:47
Обычно я добавляю проверку if (IsPostback) вокруг функций загрузки и инициализации страницы, если они имеют какой-либо контент ...

Большое спасибо, я решил проблему, управляя переменными в событии Page_Load.

If Label1.Text = 1 Then
    Dim tempcontrol2 As Control = LoadControl("Page1.ascx")
    PlaceHolder1.Controls.Add(tempcontrol2)

ElseIf Label1.Text = 2 Then
    Dim tempcontrol2 As Control = LoadControl("Page2.ascx")
    PlaceHolder1.Controls.Add(tempcontrol2)
End If

спасибо за все ответы

Чтобы получить что-либо, сохраненное в Session, вы должны отправить его на сервер.

Возможно, еще некоторые подробности о том, почему вы неЯ хочу, чтобы обновление UpdatePanel было бы полезным, и то, что вы пытаетесь выполнить, используя значение в сеансе.

РЕДАКТИРОВАТЬ: Исходя из ваших комментариев, мне кажется, что решением было бы сохранить текущий файл .ascx в сеансе и настроить для вашего DropDownList включение автоматической обратной передачи.

Итак, по вашему обращениюСледующий" а также "Назад» кнопки, сохранить индикатор для правильного .ascx для сессии.

Во время обработки обратной передачи события dropdownlist вы можете просто убедиться, что текущий файл .ascx все еще отображается, проверив сеанс на предмет правильности показа файла. Когда результат возвращается клиенту, кажется, что ничего не изменилось, потому что UpdatePanel достаточно умен, чтобы понять это.с тем же содержанием, и вы успешно справитесь со значением выпадающего списка.

 iersoy10 авг. 2009 г., 22:19
ну, я создал мастер, подобный структуре я вызываю эти файлы .ascx динамически, так что это дает волшебный вид. Если я автоматически отсылаю свой выпадающий список, он возвращается к первому webusercontrol с именем page1.ascx. это неприемлемо для меня. я пытаюсь найти решение, но пока не могу найти
 iersoy10 авг. 2009 г., 22:22
и используя сеанс, я планирую хранить глобальные переменные для использования в других файлах .ascx.
 womp10 авг. 2009 г., 22:48
Я обновил свой ответ с возможным решением для вас.

Звучит как тыВы делаете больше работы, чем вам нужно здесь. Вы изучали использование мастера управления ASP.NET?http://msdn.microsoft.com/en-us/magazine/cc163894.aspx или просто Google это.

Если вы все еще хотите сделать это по-своему, выиметь отправить на сервер (без автопостбэка + ручного нажатия кнопки отправки или путем включения автопостбэка), поскольку сессия является серверной концепцией HTTP является протоколом без сохранения состояния, поэтому единственное понятие состояния должно быть сделано вне HTTP 'с доменом. Это значит, что ты'застрял, сохраняя состояние на сервере (например, в сеансе) или, что гораздо более ограничительно, на клиенте 'компьютер (например, в куки).

 iersoy10 авг. 2009 г., 22:39
спасибо, я буду смотреть на это.

Ваш ответ на вопрос