echoSweMedlem sedan nov. 20041 189 inläggLösning som jag stannade vid för tillfället var den som jag skrev om i C# faktiskt... (den som finns tidigare upp i tråden)
En sak bara - detta förutsätter ju faktiskt att man alltid bifogar ett id med alla länkar. Kan man xml-parsa xhtml dokumentet och leta upp alla länkar innan det skickas ut och automatiskt lägga dit id eller nåt?
ahlen skrev:
Hmm, ge administratörs rättigheter till VB.net koden?! Eller vad menar du? ;-)
Nej, jag menar - hur skriver man om den här koden:
pHolder.Controls.Add ul
foreach (myDataRow in myDataSet.Tables["meny"].Rows)
//för att använda datarows måste man väl använda
//en adapter till att få datan? (en OleDbDataReader funkar väl inte)
{
pHolder.Controls.Add li
pHolder.Controls.Add HyperLink h;
h.Text = MyDataRow["text"];
h.Navigateurl = MyDataRow["address"];
if (Request.Querystring["ID"] = MyDataRow["linkID"]
{
h.Attributes.Add("class","active");
}
}
så att den fungerar?
renholm: jo, kanske det - du har inte möjligtvis något exempel?
//Henke
RrenholmMedlem sedan apr. 20012 266 inlägg Ett exempel:
protected override void Render(HtmlTextWriter writer)
{
WriteNodes(NodeContext.CurrentSite.SelectNodes(path), writer);
}
private void WriteNodes(TreeNodeCollection nodes, HtmlTextWriter writer)
{
if (nodes.Count > 0)
{
foreach(string key in Style.Keys)
writer.AddStyleAttribute(key, Style[key]);
if (this.CssClass != null)
writer.AddAttribute(HtmlTextWriterAttribute.Class, this.CssClass);
writer.RenderBeginTag("ul");
foreach(Altais.Framework.Nodes.TreeNode node in nodes)
{
if (node.Visible)
{
bool selected = false;
if (selectedpath == null)
{
if (node.ID == NodeContext.CurrentNode.ID)
selected = true;
}
else
{
if (node.ID == NodeContext.CurrentSite.Select(selectedpath).ID)
selected = true;
}
if (selected && this.selecteditemcssclass != null)
writer.AddAttribute(HtmlTextWriterAttribute.Class, this.selecteditemcssclass);
else if (this.itemcssclass != null)
writer.AddAttribute(HtmlTextWriterAttribute.Class, this.itemcssclass);
writer.RenderBeginTag("li");
NavigationItemTemplate item = new NavigationItemTemplate(node, selected);
itemtemplate.InstantiateIn(item);
item.RenderControl(writer);
writer.RenderEndTag();
writer.WriteLine();
if (mode == Mode.Tree)
WriteNodes(node.Nodes, writer);
}
}
writer.RenderEndTag();
}
}
I detta exempel används ett bakomliggande ramverk för sidhantering som kontrollen sedan skriver ut beroende på vilken path som är angiven. Används enligt nedan:
<cc1:Navigation id="nav2" Mode="Flat" CssClass="nav_1level" SelectedItemCssClass="selected" runat="server">
<ItemTemplate>
<a href='<%# Page.ResolveUrl(Container.NavigationUrl) %>'><%# Container.Node.Name %></a>
</ItemTemplate>
</cc1:Navigation>