1.找不到TreeNode类
使用TreeView,需要添加namespace:using Microsoft.Web.UI.WebControls;
2.遍历TreeView节点
下面是一个利用TreeView控件生成树状导航的示例。可以无限生成多级菜单。
树型结构表Para_Item
Item_ID(节点ID) Item_Name(节点名) Parent_ID(父结点ID)
1 All 0
2 aaa 1
3 bbb 1
4 aaa_1 2
5 bbb_1 3
private void Page_Load(object sender, System.EventArgs e)
{
String str=ConfigurationManager. ConnectionStrings["sqlcnn"].ConnectionString;
//定义数据库连接
SqlConnection con = new SqlConnection();
//打开连接
con.Open();
//获取Faq树形目录节点
SqlDataAdapter da = new SqlDataAdapter("select * from Para_item",con);
DataSet DataSet_Tree=new DataSet();
da.Fill(DataSet_Tree);
this.ViewState["DataSet_Tree"]=DataSet_Tree;
//调用递归函数,完成树形结构的生成
AddTree(0, (TreeNode)null);
}
//递归添加树的节点参数ParentID为树的最大父结点
public void AddTree(int ParentID,TreeNode pNode)
{
DataSet DataSet_Tree=(DataSet) this.ViewState["DataSet_Tree"];
DataView DataView_Tree = new DataView(DataSet_Tree.Tables[0]);
//过滤ParentID,得到当前的所有子节点 ParentID为父节点ID
DataView_Tree.RowFilter = "[Parent_ID] = " + ParentID;
//循环递归
foreach(DataRowView Row in DataView_Tree)
{
//声明节点
TreeNode Node=new TreeNode() ;
//绑定超级链接
Node.NavigateUrl = "List.aspx?Item_ID="+Row["Item_ID"].ToString();
//开始递归
if(pNode == null)
{
//添加根节点
Node.Text = Row["item_name"].ToString();
TreeView_Tree.Nodes.Add(Node);
Node.Expanded=true; //节点状态展开
AddTree(Int32.Parse(Row["item_id"].ToString()), Node); //再次递归
}
else
{
//添加当前节点的子节点
Node.Text = Row["item_name"].ToString();
pNode.Nodes.Add(Node);
Node.Expanded = true; //节点状态展开
AddTree(Int32.Parse(Row["item_id"].ToString()),Node); //再次递归
}
}
//关闭连接
con.Close();
}
3.控制父结点的开/合状态
TreeView_Tree.GetNodeFromIndex("1").Expanded=false/true;
4.清除某个父结点下的所有子节点
TreeView_IndexLeft.GetNodeFromIndex("1").Nodes.Clear();
5.设置所选节点,如选中第二个节点
function SetSelNode()
{
TreeView_Tree.selectedNodeIndex="1";
}
6.得到所选节点的Text,ID或NodeData
function GetAttribute()
{
alert(TreeView_Tree.getTreeNode(TreeView_Tree.selectedNodeIndex).getAttribute("Text"));
}
//替换Text为ID或NodeData,可分别得到所选节点的ID或NodeData
7.修改节点属性,如修改第一个节点的Text
function ModifyNode()
{
var node=TreeView_Tree.getTreeNode("0");
node.setAttribute("Text","第一个节点");
}
8.添加节点
function AddNode()
{
var node=TreeView_Tree.createTreeNode();
node.setAttribute("Text","第一个节点");
TreeView_Tree.add(node);
}
9.TreeView 中的SelectedIndexChange不执行
AutoPostBack=true,SelectedIndexChange才能被执行。
10.判断 TreeView 的一个节点下是否有子节点
if(SelectNode.Nodes.Count==0)
{
//该节点没有字节点
}