Avatar billede simsen Mester
02. januar 2011 - 23:00 Der er 1 løsning

Gøre punkt i menu med SiteMapDataSource usynlig

Hej,

Jeg har en menu som bruger en SiteMapDataSource som virker ok.

Men jeg har nu brug for i codebehind at gøre nogle af menu punkterne usynlige. Kan I hjælpe mig med det?

Min SiteMapDataSource ser sådan ud:
<?xml version="1.0" encoding="utf-8" ?>
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" enableLocalization="true" >
    <siteMapNode url="Default.aspx" title="Root"  description="" roles="*">
        <siteMapNode url="Content/Default.aspx?pid=main" title="$Resources:Resource, Home" description="" roles="*" />
        <siteMapNode url="Content/Users.aspx" title="$Resources:Resource, Members"  description="" roles="*" />
        <siteMapNode url="Content/Forum.aspx" title="$Resources:Resource, Forums"  description="" roles="*" />
        <siteMapNode url="Content/Blog.aspx" title="$Resources:Resource, Blogs"  description="" roles="*" />
        <siteMapNode url="Content/Polls.aspx" title="$Resources:Resource, Polls"  description="" roles="*" />       
        <siteMapNode url="Content/Gallery.aspx" title="$Resources:Resource, Galleries"  description="" roles="*" />       
        <siteMapNode url="Content/Events.aspx" title="$Resources:Resource, Calendar"  description="" roles="*" />
    </siteMapNode>
</siteMap>

Min menu ser ud som dette:
<asp:menu id="menuDefault"
cssclass="menuMain"
runat="server"
dynamichorizontaloffset="2"
dynamicenabledefaultpopoutimage="false"
staticenabledefaultpopoutimage="false"
DataSourceID="smdsMenuDefault">
    <staticmenuitemstyle cssclass="menuItemStatic" />
    <dynamichoverstyle cssclass="dynamicHover" />
    <dynamicmenustyle cssclass="dynamicMenu" />
    <dynamicmenuitemstyle cssclass="menuItemDynamic" />
    <statichoverstyle cssclass="staticHover" />
</asp:menu>
<asp:SiteMapDataSource ID="smdsMenuDefault" SiteMapProvider="DefaultSiteMapClosed" runat="server" ShowStartingNode="false" StartingNodeOffset="0" />

Jeg har forsøgt mig med følgende i codebehind:
protected void menuMain_ItemDataBound(object sender, MenuEventArgs e)
    {
        if (e.Item.Text == "Billeder" || e.Item.Text == "Galleries")
        {
            if (Convert.ToBoolean(AppSettingsSection.Settings["EnableUserGalleries"].Value.ToString()) == false)
            {
                e.Item.Parent.ChildItems.Remove(e.Item);               
            }
        }
    }

Men for det første er det ikke den smarteste metode, da jeg jo med tiden får flere resource filer og dermed også flere tekster og skal så ind og rette hver gang. jeg får også følgende fejl:

Object reference not set to an instance of an object.

Jeg håber nogen kan hjælpe mig, for her sidder jeg også fast :-)
Avatar billede simsen Mester
03. januar 2011 - 02:12 #1
I stedet for at fjerne parents childitems bruges:

menuDefault.Items.Remove(e.Item);
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