F
Falcula
Hello,
I have a treeview control, when i select a item i navigate to url. But
selected node is lost, it reset itself, loosing state.
I post my code here. Thanks in advance.
<script language="javascript">
var selectedPageId = 1;
function OnPageClick(pageId)
{
selectedPageId = pageId;
parent.location = "default.aspx?id="+pageId;
}
<%=javascript%>
</script>
<asp:TreeView ID="SubMenuTree" EnableClientScript="true"
EnableViewState="true" ExpandDepth="1"
OnSelectedNodeChanged="nodeSelect" OnTreeNodePopulate="PopulateNode"
runat="server" ImageSet="XPFileExplorer" NodeIndent="15">
<ParentNodeStyle Font-Bold="False" />
<HoverNodeStyle Font-Underline="True" ForeColor="#6666AA" />
<SelectedNodeStyle BackColor="#B5B5B5" Font-Underline="False"
HorizontalPadding="0px"
VerticalPadding="0px" />
<NodeStyle Font-Names="Tahoma" Font-Size="8pt" ForeColor="Black"
HorizontalPadding="2px"
NodeSpacing="0px" VerticalPadding="2px" />
<Nodes>
<asp:TreeNode Text="Root" SelectAction="Select"
PopulateOnDemand="True" Value="0"/>
</Nodes>
</asp:TreeView>
protected void PopulateNode(Object sender, TreeNodeEventArgs
e)
{
// Call the appropriate method to populate a node at a
particular level.
switch (e.Node.Depth)
{
case 0:
// Populate the first-level nodes.
PopulateTopLevelNodes(e.Node);
break;
case 1:
// Populate the second-level nodes.
PopulateChildern(e.Node);
break;
default:
// Do nothing.
break;
}
}
private void PopulateTopLevelNodes(TreeNode node)
{
Selago.BusinessLayer.Service service = new
Selago.BusinessLayer.Service();
PageList = service.GetPages();
foreach(iPage page in PageList)
{
if(page.ParentID == 0)
{
TreeNode TopLevel = new TreeNode();
TopLevel.Text = page.PageName;
TopLevel.Value = page.ID.ToString();
// Add root node to TreeView
TopLevel.PopulateOnDemand = true;
TopLevel.SelectAction =
TreeNodeSelectAction.SelectExpand;
node.ChildNodes.Add(TopLevel);
}
}
}
private void PopulateChildern(TreeNode node)
{
Selago.BusinessLayer.Service service = new
Selago.BusinessLayer.Service();
ChildrenList =
service.GetChildrenPages(Int32.Parse(node.Value));
foreach (iPage page in ChildrenList)
{
TreeNode newNode = new TreeNode();
newNode.Text = page.PageName;
newNode.Value = page.ID.ToString();
// Set additional properties for the node.
newNode.SelectAction =
TreeNodeSelectAction.SelectExpand;
// Add the new node to the ChildNodes collection of
the parent node.
node.ChildNodes.Add(newNode);
DataSet ChildrensSub = new DataSet();
int ChildrensSubCount =
service.GetChildrenPages(Int32.Parse(newNode.Value)).Count;
if (ChildrensSubCount > 0)
{
PopulateChildern(newNode);
}
}
}
protected void nodeSelect(object sender, EventArgs e)
{
javascript = "OnPageClick(" +
SubMenuTree.SelectedNode.Value + ");";
}
I have a treeview control, when i select a item i navigate to url. But
selected node is lost, it reset itself, loosing state.
I post my code here. Thanks in advance.
<script language="javascript">
var selectedPageId = 1;
function OnPageClick(pageId)
{
selectedPageId = pageId;
parent.location = "default.aspx?id="+pageId;
}
<%=javascript%>
</script>
<asp:TreeView ID="SubMenuTree" EnableClientScript="true"
EnableViewState="true" ExpandDepth="1"
OnSelectedNodeChanged="nodeSelect" OnTreeNodePopulate="PopulateNode"
runat="server" ImageSet="XPFileExplorer" NodeIndent="15">
<ParentNodeStyle Font-Bold="False" />
<HoverNodeStyle Font-Underline="True" ForeColor="#6666AA" />
<SelectedNodeStyle BackColor="#B5B5B5" Font-Underline="False"
HorizontalPadding="0px"
VerticalPadding="0px" />
<NodeStyle Font-Names="Tahoma" Font-Size="8pt" ForeColor="Black"
HorizontalPadding="2px"
NodeSpacing="0px" VerticalPadding="2px" />
<Nodes>
<asp:TreeNode Text="Root" SelectAction="Select"
PopulateOnDemand="True" Value="0"/>
</Nodes>
</asp:TreeView>
protected void PopulateNode(Object sender, TreeNodeEventArgs
e)
{
// Call the appropriate method to populate a node at a
particular level.
switch (e.Node.Depth)
{
case 0:
// Populate the first-level nodes.
PopulateTopLevelNodes(e.Node);
break;
case 1:
// Populate the second-level nodes.
PopulateChildern(e.Node);
break;
default:
// Do nothing.
break;
}
}
private void PopulateTopLevelNodes(TreeNode node)
{
Selago.BusinessLayer.Service service = new
Selago.BusinessLayer.Service();
PageList = service.GetPages();
foreach(iPage page in PageList)
{
if(page.ParentID == 0)
{
TreeNode TopLevel = new TreeNode();
TopLevel.Text = page.PageName;
TopLevel.Value = page.ID.ToString();
// Add root node to TreeView
TopLevel.PopulateOnDemand = true;
TopLevel.SelectAction =
TreeNodeSelectAction.SelectExpand;
node.ChildNodes.Add(TopLevel);
}
}
}
private void PopulateChildern(TreeNode node)
{
Selago.BusinessLayer.Service service = new
Selago.BusinessLayer.Service();
ChildrenList =
service.GetChildrenPages(Int32.Parse(node.Value));
foreach (iPage page in ChildrenList)
{
TreeNode newNode = new TreeNode();
newNode.Text = page.PageName;
newNode.Value = page.ID.ToString();
// Set additional properties for the node.
newNode.SelectAction =
TreeNodeSelectAction.SelectExpand;
// Add the new node to the ChildNodes collection of
the parent node.
node.ChildNodes.Add(newNode);
DataSet ChildrensSub = new DataSet();
int ChildrensSubCount =
service.GetChildrenPages(Int32.Parse(newNode.Value)).Count;
if (ChildrensSubCount > 0)
{
PopulateChildern(newNode);
}
}
}
protected void nodeSelect(object sender, EventArgs e)
{
javascript = "OnPageClick(" +
SubMenuTree.SelectedNode.Value + ");";
}