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 :-)