Avatar billede simsen Mester
20. juni 2008 - 10:13 Der er 1 løsning

Programmisk vælge node i Treeview

Hej,

Jeg har en menu, som jeg har valgt at vise i treeview. Selve menuen virker bare perfekt......... Der hvor jeg har problemer, er når jeg vil indsætte en ny side i menuen, så vil jeg i code behind kunne åbne menuen på netop den nyoprettede node..... Jeg har brugt et par dage nu, og kan bare ikke finde en løsning

Håber én af jer, kan fortælle mig, hvordan jeg kan åbne en bestemt node i et treeview :-)

Når jeg forsøger at finde den valgte node, får jeg følgende fejl:

Object reference not set to an instance of an object

Min kode:

aspx filen:

<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
<asp:TreeView ID="MenuTree" EnableClientScript="False" runat="server"
                    ExpandDepth="15" ShowExpandCollapse="False"
                    ontreenodeexpanded="MenuTree_TreeNodeExpanded"
                    ontreenodepopulate="MenuTree_TreeNodePopulate"
        PathSeparator="/" ontreenodecollapsed="MenuTree_TreeNodeCollapsed">
                    <NodeStyle CssClass="menulink" />
                    <SelectedNodeStyle CssClass="menulink" />
                </asp:TreeView>
               
                <br /><br /><br />
                ID:
    <asp:Label ID="lblMenuId" runat="server" Text="Label"></asp:Label>
    <br /><br />
    <asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" />
</asp:Content>

Code behind:
public partial class TestMenu : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            //16-06-2008 AS
            //Henter topmenu ind
            try
            {
                DALMenu menu = new DALMenu();
                if (menu.EditGetTopMenu(MenuTree) == Status.Success)
                {
                }
            }
            catch
            { }
        }
    }

    protected void MenuTree_TreeNodePopulate(object sender, TreeNodeEventArgs e)
    {
        if (e.Node.Depth == 0)
        {
            try
            {
                DALMenu submenu = new DALMenu();
                submenu.EditGetSubMenu(e.Node);
            }
            catch
            { }
        }

    }
    protected void MenuTree_TreeNodeExpanded(object sender, TreeNodeEventArgs e)
    {
        try
        {
            int key_id = Convert.ToInt32(e.Node.Value);

            lblMenuId.Text = key_id.ToString();

            if (e.Node.Depth == 0)
            {
                TreeView t = (TreeView)sender;

                for (int i = 0; i < t.Nodes.Count; i++)
                {
                    if (t.Nodes[i] != e.Node)
                    {
                        t.Nodes[i].CollapseAll();
                    }
                }
            }
        }
        catch
        {
        }


        //Her hentes valgte side frem
    }

    protected void MenuTree_TreeNodeCollapsed(object sender, TreeNodeEventArgs e)
    {
        try
        {
            int key_id = Convert.ToInt32(e.Node.Value);

            lblMenuId.Text = key_id.ToString();
        }
        catch
        {
        }
    }


    private void ExpandNodes(string valuepath)
    {
        string[] tmp = valuepath.Split('/');
        string tmpValuePath = string.Empty;
        for (int i = 0; i < tmp.Length; i++)
        {

            if (i == 0)
                tmpValuePath = tmp[i];
            else
                tmpValuePath += "/" + tmp[i];

            TreeNodeEventArgs e = new TreeNodeEventArgs(MenuTree.FindNode(tmpValuePath));
            e.Node.ChildNodes.Clear();
            e.Node.PopulateOnDemand = false;
            MenuTree_TreeNodePopulate(MenuTree, e);
            MenuTree.FindNode(tmpValuePath).Expand();
            MenuTree.FindNode(tmpValuePath).Selected = true;
        }
    }

    protected void Button1_Click(object sender, EventArgs e)
    {
        //I den her knap forsøger jeg at tilgå noden, jeg vil have fat i
        //string top = MenuTree.SelectedNode.ValuePath;
        ExpandNodes("s19//24");
    }
}

mvh
simsen :-)
Avatar billede simsen Mester
01. juli 2008 - 08:35 #1
lukker
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