Скрыть / Показать элементы управления с AJAX - PullRequest
1 голос
/ 15 января 2009

Я использую веб-приложение с поддержкой AJAX в ASP.NET (ASP.NET 2.0 и AJAX Toolkit 1.0) которая содержит одну кнопку и 2 панели обновления (UpdatePanel_1 и UpdatePanel_2)

Кнопка зарегистрирована с RegisterAsyncPostBackControl в объекте ScriptManager UpdatePanel_1 находится в «условном» режиме обновления и содержит TextBox.

UpdatePanel_2 находится в режиме обновления «Всегда» и содержит еще один текстовый ящик

Когда кнопка нажата, ее обработчик вызывает UpdatePanel_1.Update (), который обновляет значение TextBox на основе случайно выбранного значения в списке; Также TextBox UpdatePanel_2 обновляется автоматически, также без обновления страницы

На основании значения логической переменной ViewState я также хотел бы скрыть / показать элементы UpdatePanels, но Я получаю ошибку:

"Sys.InvalidOperationException: не удалось найти UpdatePanel с идентификатором« UpdatePanel_2 »(или UpdatePanel_1).

Если он обновляется динамически, то он должен быть внутри другой UpdatePanel "

Как это можно сделать без добавления дополнительной обертки UpdatePanels?

protected void Page_Load(object sender, EventArgs e)
{
    ScriptManager1.RegisterAsyncPostBackControl(Button1); 


    if (!IsPostBack)   
    {

        Visibility = true;
    }

    UpdatePanel_1.Visible = !Visibility;
    UpdatePanel_2.Visible = Visibility;

    Visibility = !Visibility;        
}


protected void Button1_Click(object sender, EventArgs e)
{
        if (Panel1.Visible)
                 UpdatePanel_1.Update();    
}

protected bool Visibility
{
    get
    {
        return (bool)(ViewState["Visibility"] ?? true);
    }
    set
    {
        ViewState["Visibility"] = value;
    }
}

Ответы [ 2 ]

2 голосов
/ 26 февраля 2009

Проблема в том, что невидимые элементы управления не отображаются клиенту. Поэтому попытка сделать их видимыми не сработает, потому что для клиента они не существуют.

Попробуйте использовать style = "display: none" или используйте разные классы и стили CSS для видимых и невидимых панелей вместо установки visible = false;

0 голосов
/ 18 июня 2009

Вы можете видеть невидимые или видимые элементы управления, являющиеся дочерними по отношению к панели обновления, а не невидимые, видимые панели обновления, я пытаюсь использовать updatemode = conditional, но error, и затем я вижу добавленные элементы управления к панели обновления Хоп помочь вам Спасибо всем сообщение

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