Har börjat knåpa ihop lite kod men fattar inte riktigt hur menykontrollen funkar. Hur bestämmer man att ett menyval är undermeny till sin parentmeny?
(nu är if-taggarna lika så allt loopas ut på samma rad, dvs. alla menyval är huvudmenyval)
Jag la med lite dummydata, allt hämtas egentligen från databas.
Hoppas nån förstår vad jag är ute efter! :)
meny.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Menu.aspx.cs" Inherits="Menu" %>
<!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:Menu ID="PublicMenu" runat="server"
Orientation="Horizontal">
</asp:Menu>
</div>
</form>
</body>
</html>
meny.aspx.cb
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class Menu : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
int Y = 0;
DataTable table = new DataTable();
DataColumn column;
DataRow row;
column = new DataColumn();
column.DataType = System.Type.GetType("System.String");
column.ColumnName = "Menuname";
column.AutoIncrement = false;
column.Caption = "Menuname";
column.ReadOnly = false;
column.Unique = false;
table.Columns.Add(column);
column = new DataColumn();
column.DataType = System.Type.GetType("System.Int32");
column.ColumnName = "Y";
column.AutoIncrement = false;
column.Caption = "Y";
column.ReadOnly = false;
column.Unique = false;
table.Columns.Add(column);
row = table.NewRow();
row["Menuname"] = "Meny 1";
row["Y"] = "2";
table.Rows.Add(row);
row = table.NewRow();
row["Menuname"] = "Meny 2";
row["Y"] = "2";
table.Rows.Add(row);
row = table.NewRow();
row["Menuname"] = "Meny 2 Undermenu 1";
row["Y"] = "3";
table.Rows.Add(row);
row = table.NewRow();
row["Menuname"] = "Meny 3";
row["Y"] = "2";
table.Rows.Add(row);
foreach (DataRow rows in table.Rows)
{
MenuItem menuItem;
[b]
//child till föreg. menyval
if ((int)rows["Y"] > Y)
{
menuItem = new MenuItem((string)rows["Menuname"]);
PublicMenu.Items.Add(menuItem);
}
else
//ej child tll föreg. menyval
if ((int)rows["Y"] < Y)
{
menuItem = new MenuItem((string)rows["Menuname"]);
PublicMenu.Items.Add(menuItem);
}
//samma nivå som föreg. menyval
else
{
menuItem = new MenuItem((string)rows["Menuname"]);
PublicMenu.Items.Add(menuItem);
}
[/b]
Y = (int)rows["Y"];
}
PublicMenu.DataBind();
}
}
tänkt resultat (översatt i xml):
<?xml version="1.0" encoding="utf-8" ?>
<menus>
<menu name="Meny 1"></menu>
<menu name="Meny 2">
<menu name="Meny 2 Undermeny 1"></menu>
</menu>
<menu name="Meny 3"></menu>
</menus>