Avatar billede henrik_bs Nybegynder
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 ??
Avatar billede snepnet Nybegynder
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
Avatar billede snepnet Nybegynder
24. september 2004 - 23:59 #2
(QueryString - altså med uppercase S)
Avatar billede henrik_bs Nybegynder
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'
Avatar billede snepnet Nybegynder
25. september 2004 - 00:09 #4
nej det var derfor jeg postede den næste bedsked også QueryString (med stort S).
mvh
Avatar billede henrik_bs Nybegynder
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);
                    }
                }
            }
        }
Avatar billede snepnet Nybegynder
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
Avatar billede henrik_bs Nybegynder
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
Avatar billede snepnet Nybegynder
25. september 2004 - 00:19 #8
hvad er det der kaster den exception ?
Avatar billede snepnet Nybegynder
25. september 2004 - 00:22 #9
man plejer at få lidt flere oplysninger end bare fejlmeddelelsen... kan du ikke poste hele fejlsiden ?
Avatar billede henrik_bs Nybegynder
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
Avatar billede snepnet Nybegynder
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.
Avatar billede henrik_bs Nybegynder
25. september 2004 - 00:27 #12
ok
hvordan får jeg via min aspx side kaldt userkontrollen med en QueryString ??
Avatar billede snepnet Nybegynder
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.
Avatar billede snepnet Nybegynder
25. september 2004 - 00:30 #14
altså hvis kontrollen ligger på somepage.aspx - kalder du bare somepage.aspx?Expand=<hvad der nu skal stå>
Avatar billede henrik_bs Nybegynder
25. september 2004 - 00:34 #15
1000 tak for hjælpen. nu virker det
læg et svar og pointene er dine
Avatar billede snepnet Nybegynder
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.
Avatar billede henrik_bs Nybegynder
25. september 2004 - 00:44 #17
tak
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester