Hej! Intressant problem; problemet är att viewstate inte skickas med då du aldrig gör någon post när du byter sida. En lösning skulle vara att du loopade igenom din viewstate och tog reda på alla noder som var expanderade + vilken som var aktiv och "skickar med det" på något sätt Precis, men vet inte hur jag skulle kunna göra detta! Nja, var mer inne på att du skulle göra en rekursiv loop på din treeview och sedan spara i t.ex. sessionstate lite temporärt eller något liknande Då min TreeView kommer att innehålla över 6000 noder tror jag det blir en mycket tidsödande åtgärd... :( Det tvivlar jag på, samma sak ska ju ändå göras varje gång det blir postback, oavsett om det är du eller den inbyggda koden Jag har en TreeView i en masterpage, som funkar som den ska. Har hittat den i nån tutorial nånstans, men hittar inte länken...Master/Content pages och TreeView
Är relativt ny på ASP.NET (Har hållt mig kvar i Classic ASP tills nu),
APS.NET (C#) är en fröjd att koda i, men nu har jag stött på ett problem jag inte klarar av.
Har sökt i timmar på MSDN och google, men inte hittat något som kan vara till hjälp.
Så här ligger det till:
Har en master page som fungerar som en ram, en liten header meny (två knappar) och en spalt till vänster som innehåller en TreeView.
Har två content pages (som länkas från de två knapparna i menyn).
TreeView objektet används för att göra selektioner på de två content pages.
Problemet:
När jag byter mellan de olika sidorna så förlorar TreeView objektet sin ViewState (den fälls ihop).
Jag vill ju kunna växla mellan de två sidorna utan att behöva göra om valet i TreeView objektet.
Så hur löser jag detta?
Hoppas att någon kan hjälpa mig!
Bästa hälsningar
Per HellqvistSv: Master/Content pages och TreeView
Sv:Master/Content pages och TreeView
Kan man läsa ut viewstate för ett object vid varje postback och spara detta i en cookie eller dyl.? och sedan skriva tillbaka detta vid page_load när jag byter sida?Sv: Master/Content pages och TreeView
Sv:Master/Content pages och TreeView
Sv: Master/Content pages och TreeView
Sv:Master/Content pages och TreeView
Jag har en websitemap "Web.sitemap" :
<siteMap>
<siteMapNode title="Home" description="Home" url="~/home.aspx" >
<siteMapNode title="Products" description="Our products"
url="~/Products.aspx">
<siteMapNode title="Hardware"
description="Hardware we offer"
url="~/Hardware.aspx" />
<siteMapNode title="Software"
description="Software for sale"
url="~/Software.aspx" />
</siteMapNode>
</siteMapNode>
</siteMap>
en masterfil "Navigation.master" :
<%@ Master Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:SiteMapDataSource ID="SiteMapDataSource1" runat="server" />
<br />
<table style="z-index: 100; left: 0px; width: 100%; position: absolute; top: 0px;">
<tr>
<td rowspan="2" style="width: 200px; height: 476px">
</td>
<td rowspan="1" style="font-family: Verdana">
</td>
</tr>
<tr>
<td style="height: 476px;" colspan="2" valign="top">
<asp:TreeView ID="TreeView1" runat="server" DataSourceID="SiteMapDataSource1" Style="z-index: 100;
left: 0px; position: absolute; top: 0px" ImageSet="Msdn" NodeIndent="10" Height="192px" Width="128px">
<ParentNodeStyle Font-Bold="False" />
<HoverNodeStyle BackColor="#CCCCCC" BorderColor="#888888" BorderStyle="Solid" Font-Underline="True" />
<SelectedNodeStyle BackColor="White" BorderColor="#888888" BorderStyle="Solid" BorderWidth="1px"
Font-Underline="False" HorizontalPadding="3px" VerticalPadding="1px" />
<NodeStyle Font-Names="Verdana" Font-Size="8pt" ForeColor="Black" HorizontalPadding="5px"
NodeSpacing="1px" VerticalPadding="2px" />
</asp:TreeView>
<asp:contentplaceholder id="ContentPlaceHolder1" runat="server">
</asp:contentplaceholder>
<asp:SiteMapPath ID="SiteMapPath1" runat="server" Style="z-index: 100; left: 206px;
position: absolute; top: 5px" Width="300px" Font-Names="Verdana" Font-Size="0.8em" PathSeparator=" : ">
<PathSeparatorStyle Font-Bold="True" ForeColor="#507CD1" />
<CurrentNodeStyle ForeColor="#333333" />
<NodeStyle Font-Bold="True" ForeColor="#284E98" />
<RootNodeStyle Font-Bold="True" ForeColor="#507CD1" />
</asp:SiteMapPath>
<br />
</td>
</tr>
</table>
</div>
</form>
</body>
</html>
och sen sidorna som visar innehållet för de olika "knapparna":
Home.aspx
<%@ Page Language="C#" MasterPageFile="~/Navigation.master" Title="Untitled Page" %>
<asp:Content ID="Content1" runat="server" ContentPlaceHolderID="ContentPlaceHolder1">
<h1>
Home
</h1>
</asp:Content>
och så likadana sidor för Products, Software och Hardware...
Jag är helt ny på ASP.NET så jag vet inte varför det funkar som det gör, men jag antar att några av attributen i TreeView (kanske ImageSet?) innehåller nåt fördefinierat template som är kopplat till ett javascript.
//Cicci