Jak se mohu zaregistrovat Historie Zápisy (zpět / vpřed) v Multiview (na aktivní Index změněny)

hlasů
0

Jsem pomocí panelu aktualizace mít část svého aktualizaci stránek asynchronně. Jeho navigace musí být registrován, pokud Multiview změní svou aktivní index.

Například, když se stránka poprvé načte, tím Multiview Active Index = 0. Když uživatel klepne na odkaz, jsem ukázat obsah zobrazení indexu 1.

Je opravdu důležité, aby uživatel jít dopředu a dozadu pomocí historie prohlížeče.

ScriptManagerSe nachází v hlavní stránky a má jeho EnableHistoryvlastnost nastavena na hodnotu True.

Má někdo ho realizovány při práci s Multiview?

Položena 26/08/2009 v 22:55
zdroj uživatelem
V jiných jazycích...                            


2 odpovědí

hlasů
2

Myslím, že by to mělo fungovat, ale budete muset to trochu přizpůsobit. Dělám něco velmi podobného, ​​ale musel jsem se vzdálit od používání MULTVIEW ve UpdatePanel kvůli problému s kontrolou třetích stran jsem vložené v něm.

Budete muset přidat odkaz na vaši stránku předlohy v aspx souboru pomocí asp.net níže uvedené značky. A také vystavit ScriptManager jako veřejnou kontrolou v hlavní stránky, takže můžete zapojit události do něj.

Ve vaší stránky design / html kódu: Aktualizace virtuální cestu k master nebo použít typ přiřadit typové označení.

<%@ MasterType VirtualPath="~/MasterPage.master" %>

V init případě vaší stránce:

public void Page_Init(object sender, EventArgs e)
{
    // can be done at MasterPage level if you like
    this.Master.ScriptManager.EnableHistory = true;
}

Pak v případě načítání stránky:

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
    }           
}

Potom přidejte tuto novou rutinu události na vaší stránce. Tato jména Položka „myArgs“, měli byste něco použít trochu více intuitivní pro svůj obsah. V mé implementaci, mám řadu položek (např pořadí řazení, index stránky, atd oddělených delims a pak rozbít je a přiřadit jim).

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
    }
}

Tyto args bude index MultiView. To jsou jen pomocné funkce, které používám. Pokud index je jediná položka, kterou zajímá, pak stačí vložit přímo tyto hovory do hlavních metod.

private void SetMyArgs(string args)
{
    int myIndex = int.Parse(args);
    // set multiview index here?
}

private string GetMyArgs()
{
    return myMultiview.ActiveIndex.ToString();
}

Pak, když budete spouštět událost, která mění aktivního index, přidejte k těmto metodám

if (this.IsAsync)
{
    this.Master.ScriptManager.AddHistoryPoint("myArgs", GetMyArgs());
}

Doufejme, že to vám dává určitou pomoc.

Odpovězeno 27/08/2009 v 00:40
zdroj uživatelem

hlasů
0

Byste neměli používat this.IsAsync, ale spíše ScriptManager.GetCurrent(Page).IsInAsyncPostBack(nebo ve vašem případě this.Master.ScriptManager.IsInAsyncPostBack).

Odpovězeno 13/03/2013 v 11:18
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more