24. september 2004 - 23:55
Der er
16 kommentarer og 1 løsning
Menu i usercontrol
Hej Jeg har en menu i en usercontrol. Menuen bliver dannet udfra en XML-fil men følgende syntaks : <MainMenu> <Menu> <MenuName>Nyheder</MenuName> <MenuItem> <Name>Vis nyheder</Name> <Link>Nyheder/visNyhder.aspx</Link> </MenuItem> <MenuItem> <Name>Opret Nyheder</Name> <Link>Nyheder/opretNyhder.aspx</Link> </MenuItem> </Menu> <Menu>........... </Menu> Første gang siden med usercontrolen loades skal alle <MenuName> vises. De gør de også. Problemet opstår når jeg skal have vist de underliggende noder til MenuName. Tidl var usercontrollen en almindelig aspx siden hvor jeg benytte en querystring til at styre de underliggende punkter. Hvordan løses dette, da man jo ikke kan bruge en querysting på en usercontrol ??
Annonceindlæg fra Novataris
24. september 2004 - 23:57
#1
der er ikke noget problemer med at bruge en qurystring i en usercontrol. du kan bare bruge C# this.Page.Request.Querystring VB Me.Page.Request.Querystring mvh
24. september 2004 - 23:59
#2
(QueryString - altså med uppercase S)
25. september 2004 - 00:05
#3
så får jeg følgende fejl C:\Inetpub\wwwroot\\Administration\NavBar.ascx.cs(67): 'System.Web.HttpRequest' does not contain a definition for 'Querystring'
25. september 2004 - 00:09
#4
nej det var derfor jeg postede den næste bedsked også QueryString (med stort S). mvh
25. september 2004 - 00:09
#5
min usercontrol ser sådan ud : private void Page_Load(object sender, System.EventArgs e) { XmlReader reader = new XmlTextReader(File.OpenRead(Server.MapPath("..\\XMLFiles\\Menu.xml"))); XmlDocument doc = new XmlDocument(); doc.Load(reader); reader.Close(); string expand = this.Page.Request.Querystring["Expand"]; int ExpandWhich; if (expand == null) ExpandWhich = -1; else ExpandWhich = Convert.ToInt16(expand); TableCell cell; HyperLink link; XmlNodeList Menus = doc.GetElementsByTagName("Menu"); for (int i = 0; i < Menus.Count; i++) { int currnode = 0; XmlNodeList MenuNodes = Menus[i].ChildNodes; TableRow row = new TableRow(); tblMenu.Rows.Add(row); if (ExpandWhich == i) { cell = new TableCell(); cell.Width = Unit.Percentage(1.0); cell.Controls.Add(AddImage("Images/minus.gif")); row.Cells.Add(cell); link = new HyperLink(); link.Text = MenuNodes[currnode++].InnerText; link.NavigateUrl = "NavBar.ascx?Expand=-1"; cell = new TableCell(); cell.Width = Unit.Percentage(99.0); cell.Controls.Add(link); row.Cells.Add(cell); // start at 1 since 0 is the Menu Name for (int j = currnode; j < MenuNodes.Count; j++) { row = new TableRow(); tblMenu.Rows.Add(row); cell = new TableCell(); cell.Width = Unit.Percentage(1.0); cell.Controls.Add(AddImage("Images/blank.gif")); row.Cells.Add(cell); link = new HyperLink(); link.Text = MenuNodes[j].ChildNodes[0].InnerText; link.NavigateUrl = MenuNodes[j].ChildNodes[1].InnerText; link.Target = "main"; cell = new TableCell(); cell.Width = Unit.Percentage(99.0); cell.Controls.Add(link); row.Cells.Add(cell); } } else { cell = new TableCell(); cell.Width = Unit.Percentage(1.0); cell.Controls.Add(AddImage("Images/plus.gif")); row.Cells.Add(cell); link = new HyperLink(); link.Text = MenuNodes[currnode++].InnerText; link.NavigateUrl = "NavBar.ascx?Expand=" + i; cell = new TableCell(); cell.Width = Unit.Percentage(99.0); cell.Controls.Add(link); row.Cells.Add(cell); } } } }
25. september 2004 - 00:11
#6
jaja rolig nu.... nu har jeg 2 gange skrevet at QueryString er med stort S - kan du ikke lige prøve det :o) mvh
25. september 2004 - 00:17
#7
sorry har fået rette fejlen. Men jeg kan se at QueryStingen ikke rigtigt løser mit problem. :-( jeg får ikke min underpunkter frem. Får følgende fejl This type of page is not served. Men jeg referer også til NavBar.ascx i min link.NavigateUrl Kan bare ikke lige gennemskue hvordan det løses
25. september 2004 - 00:19
#8
hvad er det der kaster den exception ?
25. september 2004 - 00:22
#9
man plejer at få lidt flere oplysninger end bare fejlmeddelelsen... kan du ikke poste hele fejlsiden ?
25. september 2004 - 00:22
#10
Hele fejlen ser sådan ud : Server Error in '/hjemmeside' Application. -------------------------------------------------------------------------------- This type of page is not served. Description: The type of page you have requested is not served because it has been explicitly forbidden. The extension '.ascx' may be incorrect. Please review the URL below and make sure that it is spelled correctly. Requested Url: /Administration/NavBar.ascx
25. september 2004 - 00:24
#11
hov... du kan ikke kalde en usercontrol direkte. du bliver nødt til at smide den ind på en form, og så kalde formen... altså en aspx-side.
25. september 2004 - 00:27
#12
ok hvordan får jeg via min aspx side kaldt userkontrollen med en QueryString ??
25. september 2004 - 00:29
#13
du kalder ikke userkontrollen... den bliver bare en del af siden når du sætter den ind, så du kalder den siden den sidder på - med din querystring.
25. september 2004 - 00:30
#14
altså hvis kontrollen ligger på somepage.aspx - kalder du bare somepage.aspx?Expand=<hvad der nu skal stå>
25. september 2004 - 00:34
#15
1000 tak for hjælpen. nu virker det læg et svar og pointene er dine
25. september 2004 - 00:40
#16
det var så lidt... du siger bare til hvis du løber ind i flere problemer med kontroller :o) mvh - og held og lykke med det.
25. september 2004 - 00:44
#17
tak
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.