---
title: "Dynamisk meny"
type: "forum-thread"
url: "https://www.webforum.nu/amne/dotnet/71430-dynamisk-meny/page2"
topic: ".NET"
topic_url: "https://www.webforum.nu/amne/dotnet"
author: "Web-Tor"
published: "2003-03-17T22:44:47.000Z"
updated: "2003-03-28T11:22:14.000Z"
replies: 23
views: 900
page: 2
pages: 2
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/dotnet/71430-dynamisk-meny"
---

# Dynamisk meny

_Sida 2 av 2._

## #21 — Web-Tor, 2003-03-26T13:01Z

> Klart att det går att lösa, frågan är bara hur

Jag har hört att allt går att lösa. :e
Med den här loopen får jag ju ut alla noder i databasen (och ändra utseende på länken på den sidan man är):

```
for (int i=0; i < Source.Count; i++)
{
	HyperLink link = new HyperLink();
	MenuPH.Controls.Add(link);
	link.Text = Source[i]["colName"].ToString();
	link.NavigateUrl = "../default1.aspx?node=" + Source[i]["colID"].ToString();

	if (Convert.ToInt16(Source[i]["colID"]) == _node)
		link.CssClass = "menu1-on";
	else
		link.CssClass = "menu1";

  Literal literal = new Literal();
	literal.Text = "<br />\n";
	MenuPH.Controls.Add(literal);
}
```

Nu är ju grejen att det är ju inte förrän jag klickar på "Kontakt" som "Test 1" och "Test 2" ska visas. Hur får jag till det?

Permalänk: https://www.webforum.nu/p/991165

## #22 — NETwork, 2003-03-26T14:32Z

En idé som jag fick bara... skulle du inte kunna hämta rätt menyalternativ direkt i din sql-sats? Du vet ju vad som ska hämtas ut om du skickar in ett id (alla nivå 1 plus alla nivå 2 i den valda sektionen). Sedan i din loop sätter du olika styles på dem beroende på om det är ett huvud- eller undermenyalternativ med en if-sats. Då behöver du bara en loop. Är ingen nod vald hämtar du bara dina nivå1-länkar. Då kan du använda samma loop till båda...

Permalänk: https://www.webforum.nu/p/991247

## #23 — Web-Tor, 2003-03-26T14:35Z

Hmmm, jag får sitta hemma på kammaren och fundera på det här ett tag till...
Kom gärna med fler fina förslag. :)

Permalänk: https://www.webforum.nu/p/991252

## #24 — Web-Tor, 2003-03-28T11:22Z

Då var det löst! Jag gjorde som du föreslog NETwork och så här blev resultatet:

```
private void Page_Load(object sender, System.EventArgs e)
{
	//***   Hämtar sidans ID   ***
	int _node = Convert.ToInt16(Request.QueryString["node"]);
	if (_node <= 0)
		_node = 1;

	//***   Sektion   ***
	Database db1 = new Database();
	OleDbDataReader myReader = db1.GetDataReader("SELECT colSection FROM tblContent WHERE colID=" + _node);
	if (myReader.Read())
	{
		_section = myReader["colSection"].ToString();
	}
	myReader.Close();

	//***   Hämtar menyn   ***
	Database db = new Database();
	DataSet ds = db.GetDataSet("SELECT colID, colName, colLevel, colSection, colTemplate FROM tblContent WHERE colLevel=1 OR colSection=" + _section + " ORDER BY colSection, colLevel, colSortOrder");
	DataView Source = ds.Tables[0].DefaultView;

	for (int i=0; i < Source.Count; i++)
	{
		int pageID = Convert.ToInt16(Source[i]["colID"]);

		HyperLink link = new HyperLink();
		phMenu.Controls.Add(link);
		link.NavigateUrl = "../" + Source[i]["colTemplate"].ToString() +"?node=" + Source[i]["colID"].ToString();
		link.Text = Source[i]["colName"].ToString();

		//*** NIVÅ 1
		if (Source[i]["colLevel"].ToString() == "1")
		{
			if (pageID == _node)
				link.Text += "<img src=\"grafik/menu1-on.gif\" alt=\"\">";
			else if (pageID != _node && _section == Source[i]["colSection"].ToString())
				link.Text += "<img src=\"grafik/menu1-under.gif\" alt=\"\">";
			else
				link.Text += "<img src=\"grafik/menu1.gif\" alt=\"\">";

			link.CssClass = (pageID == _node) ?  "menu1-on" : "menu1";
				
		}

		//*** NIVÅ 2
		else if (Source[i]["colLevel"].ToString() == "2")
		{
			if (pageID == _node)
				link.Text += "<img src=\"grafik/menu2-on.gif\" alt=\"\">";
			else
				link.Text += "<img src=\"grafik/menu2.gif\" alt=\"\">";

			link.CssClass = (pageID == _node) ?  "menu2-on" : "menu2";
		}

		Literal literal = new Literal(); //** Ny rad efter varje länk
		literal.Text = "<br />\n";
		phMenu.Controls.Add(literal);
	}
}
```

Man kan säkert snygga till koden men det här får duga så länge. ;)

Permalänk: https://www.webforum.nu/p/992678

---

Tråden på webben: https://www.webforum.nu/amne/dotnet/71430-dynamisk-meny/page2  
Föregående sida: https://www.webforum.nu/amne/dotnet/71430-dynamisk-meny.md
