Я использую веб-приложение с поддержкой 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;
}
}