Я думаю, что это должно сработать, но вам нужно немного его настроить. Я делаю что-то очень похожее, но мне пришлось отказаться от использования multview в области обновления из-за проблемы с сторонним элементом управления, который я встроил в него.
Вам нужно добавить ссылку на свою главную страницу в вашем aspx-файле, используя тег asp.net ниже. Кроме того, вы можете открыть сценарист как публичный элемент управления на главной странице, чтобы вы могли связать с ним событие.
В коде страницы/html-кода страницы: обновите виртуальный путь к своему хозяину или используйте тип, чтобы назначить ссылку на тип.
<%@ MasterType VirtualPath="~/MasterPage.master" %>
В вашей странице события инициализации:
public void Page_Init(object sender, EventArgs e)
{
// can be done at MasterPage level if you like
this.Master.ScriptManager.EnableHistory = true;
}
Тогда в случае загрузки страницы:
protected void Page_Load(object sender, EventArgs e)
{
this.Master.ScriptManager.Navigate +=
new EventHandler<HistoryEventArgs>(ScriptManager_Navigate);
if (!this.IsPostBack && !ScriptManager.GetCurrent(this).IsInAsyncPostBack)
{
// load default multiview index
}
}
Затем добавить новый обработчик событий для вашей страницы. Это называет элемент «myArgs», вы должны использовать что-то более интуитивно понятное для своего контента. В моей реализации у меня есть ряд элементов (например, порядок сортировки, индекс страницы и т. Д., Разделенные разделителями, а затем разбивают их и назначают).
protected void ScriptManager_Navigate(object sender, HistoryEventArgs e)
{
if (!string.IsNullOrEmpty(e.State["myArgs"]))
{
string args = e.State["myArgs"];
SetMyArgs(args);
}
else
{
// just load default
}
}
Арги будут мультивизельным индексом. Это только вспомогательные функции, которые я использую. Если индекс является единственным предметом, о котором вы заботитесь, то вы можете просто вставить эти вызовы в основные методы.
private void SetMyArgs(string args)
{
int myIndex = int.Parse(args);
// set multiview index here?
}
private string GetMyArgs()
{
return myMultiview.ActiveIndex.ToString();
}
Затем, когда вы вызываете событие, которое изменяет активный индекс, добавьте в эти методы
if (this.IsAsync)
{
this.Master.ScriptManager.AddHistoryPoint("myArgs", GetMyArgs());
}
Будем надеяться, что это дает вам некоторую помощь.
Hi Jim, Большое спасибо, сейчас он работает так, как должен! Josi – 2009-08-27 03:48:06