2008-09-10 14 views
2

Ich fand schon diesen Artikel:Wie behalte ich die Position eines DragPanelExtender über Postbacks hinweg?

http://www.dotnetcurry.com/ShowArticle.aspx?ID=181&AspxAutoDetectCookieSupport=1

Aber ich habe eine andere Situation bekommt. Ich verbinde einige hiddenFields innerhalb der Masterseite und versuche, die Position des dragPanel in diesen zu speichern.

Ich verwende Javascript, um die Position des DragPanel zu speichern, und wenn der Benutzer auf einen Link klickt, wird die neue Seite geladen, aber das DragPanel wird in die Startposition zurückgesetzt.

Gibt es einen einfachen Weg, dies zu tun?

Pseudocode:

**this is in MasterPage.master** 


function pageLoad() 

{ 

    // call the savePanelPosition when the panel is moved 

    $find('DragP1').add_move(savePanelPosition); 

    var elem = $get("<%=HiddenField1.ClientID%>"); 

    if(elem.value != "0") 
    { 

     var temp = new Array(); 

     temp = elem.value.split(';'); 

     // set the position of the panel manually with the retrieve value 

     $find('<%=Panel1_DragPanelExtender.BehaviorID%>').set_location(new 

Sys.UI.Point(parseInt(temp[0]),parseInt(temp[1]))); 

    } 

}  


function savePanelPosition() 

{ 
    var elem = $find('DragP1').get_element(); 

    var loc = $common.getLocation(elem); 

    var elem1 = $get("<%=HiddenField1.ClientID%>"); 

    // store the value in the hidden field 

    elem1.value = loc.x + ';' + loc.y; 

}   


<asp:Button ID="Button1" runat="server" Text="Button"/> 

<asp:HiddenField ID="HiddenField1" runat="server" Value="0" 

jedoch Hidden nicht sichtbar in der umgeleiteten Seite ist, foo.aspx

Antwort

1

Anstatt die Positionsinformationen in einem versteckten Feld zu speichern, speichern Sie es in einem Cookie . Die Informationen sind klein, so dass die Seitenlade-Performance nur minimal beeinflusst wird.

0

ok so habe ich die Drag-Zeug zu arbeiten, speichert in einer Datenbank und alles, bringt cool auf meinem einen Monitor 1600X1050 alles gut, gut und dandy! ABER WARTE! Ich bringe die gleiche Seite auf meinem anderen Monitor 1366x768 und die Panels sind alle aus.

Die Speicherfunktion wird in Pixeln gespeichert. Wenn Sie also zu einer anderen "Auflösung" wechseln, sind die Bedienfelder deaktiviert. du weißt?

P.S. Ich könnte eine Nachricht auftauchen, die besagt, dass der Benutzer ihre Monitoreinstellungen ändern soll, lol ...

Verwandte Themen