数据库表结构为ID,NAME,PARENTID
例如:
01 福建 0
02 河北 0
020 石家庄 02
010 厦门 01
例如:
01 福建 0
02 河北 0
020 石家庄 02
010 厦门 01
解决方案 »
- SWFObject.js 问题
- asp:DropDownList如何载入一数据表(sql2005)一字段所有值?C#代码如何写?
- 右侧浮动QQ的问题,JS在DW里面是好的,放到VS2008就出错,麻烦看看
- 求一个画流程图的软件.
- short s1 = 1;s1 =s1+ 1; 和short s1 = 1; s1 += 1; 的区别
- var iedom=document.all||document.getElementById 作用?
- 求一个通用的web数据显示页面表
- 请问现在看quickstart还OK吗?有没有过时啊?
- 在.net 1.1 下编译的网站可以在 .net1.0 下运行吗?
- 紧急!页面传值问题!
- ASP.NET如何调用ACTIVEX的方法???
- 程序员,年龄大了,还没有技术,还没有经验怎么办。
这是我自己写的 你自己再改改吧 protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
// tv.Attributes.Add("oncheck", "tree_oncheck()");
CreateTreeView(); // SeachNode(); }
// SeachNode();
} private void SeachNode()
{ string noder = this.tv.SelectedValue;
TreeNode node = this.tv.SelectedNode;
if (node != null)
{
if (node.Parent != null)
{
node = node.Parent;
node.Expanded = true;
}
}
//TreeNode node = tv.SelectedNode;
// if(node is null)
// {
// if(node.Parent!=null)
// {
// node = node.Parent;
// node.Expanded=true;
// }
// }
} private void CreateTreeView()
{
frmMaster.Attributes["onclick"] = "return TimeClear()";
frmMaster.Attributes["onkeydown"] = "return TimeClear()";
Employee employee = new Employee(ContextHelper.GetContextInfo().UserNO);
string submenuhtml = string.Empty;
string submenuurl = string.Empty;
DataTable dt = Employee.Menus;
tv.Nodes.Clear();//清空树的所有节点 DataRow[] rowList = dt.Select("parent_id=0");
foreach (DataRow row in rowList)
{
//增加父节点 TreeNode rootNode = new TreeNode();
rootNode.Text = row["menu_name"].ToString();
rootNode.Value = row["menu_id"].ToString();
rootNode.Expanded = true;
if (row["target_url"].ToString().Trim() != "")
{
rootNode.NavigateUrl = row["target_url"].ToString() + "?NODE=" + row["menu_id"].ToString();
} else
{
rootNode.SelectAction = TreeNodeSelectAction.Expand;
//if (rootNode.Selected = true)
//{ //}
// //if (strModID == "SYS_SYSTEM" || SysID == "SYS")
rootNode.Expanded = true;
}
tv.Nodes.Add(rootNode);
//reader.Close();
// parent_id='" + row["menu_id"].ToString() + "'or
CreateChildNode(tv, rootNode, dt, rootNode.Value.Trim());
}
// con.Close();
}
private static void CreateChildNode(TreeView treeView, TreeNode parentNode, DataTable dt, string ID)
{
string sql = string.Format("parent_id={0}", ID); DataRow[] rowList = dt.Select(sql);
////选择数据,添加排序表达式
//DataRow[] rowList = dt.Select("ParentID=" + Convert.ToInt32(parentNode.Value));
foreach (DataRow row in rowList)
{
//创建一个新的节点了
TreeNode node = new TreeNode();
node.Text = row["menu_name"].ToString();
node.Value = row["menu_id"].ToString();
if (row["target_url"].ToString().Trim() != "")
{
node.NavigateUrl = row["target_url"].ToString() + "?NODE=" + row["menu_id"].ToString();
}
else
{
node.NavigateUrl = "";
}
//node.SelectAction = TreeNodeSelectAction.SelectExpand;
node.Expanded = false;
//if (treeView.SelectedValue == node.Value)
//{
// node.Selected = true;
//}
//if (node.Selected == true)
//{
// parentNode.Expanded = true;
//}
parentNode.ChildNodes.Add(node);
//递归调用,创建其他节点
CreateChildNode(treeView, node, dt, node.Value.Trim());
}
}
{
if(!IsPostBack)
{
DataTable dtCategories = GetCategories();
//循环遍历记录
foreach(DataRow row in dtCategories,Rows)
[
TreeNode nodeCategory = new TreeNode(row["CategoryName"].toString,
row["CategoryID"].toString();)
//使用该节点的子节点的填充功能
nodeCategory.PoplateOnDemand = true;
TreeView1.Nodes.Add(nodeCategory);
}
}
}
TreeNode root=new TreeNode();
root.Text="";
this.TreeView1.Nodes.Add(root);
this.InitTree(this.TreeView1.Nodes[0].Nodes,0,dt);
private void InitTree(TreeNodeCollection root,string parentID,DataTable dt)
{
TreeNode node;
DataRow []rows=dt.Select("ParentID="+parentID);
foreach(DataRow row in rows)
{
node=new TreeNode();
node.ID=row["ID"].ToString();
node.Text=row["NAME"].ToString();
root.Add(node);
InitTree(node.Nodes,node.ID,dt);
}
}参考
{
if (!IsPostBack)
{//首先填充第一级节点。
DataView dv = db.GetDv("select * from t_bd_item_cls where cls_parent='0'"); foreach (DataRowView datav in dv)
{ //循环数据视图,将对应的数据交给一个节点对象,然后添加到树上继续填加
TreeNode tn = new TreeNode();
tn.Text = datav["item_clsname"].ToString();
tn.Value = datav["item_clsno"].ToString();
tn.Expanded = false;
TreeView1.Nodes.Add(tn);
AddChildNode(tn);
}
}
}
private void AddChildNode(TreeNode tn)
{//填充二级节点,需要一级节点的Value,所以直接传了个TreeNode
string provID = Convert.ToString (tn.Value);
DataView dv = db.GetDv("select * from t_bd_item_cls where cls_parent=" + provID + "");
foreach (DataRowView datav in dv)
{
TreeNode Ctn = new TreeNode();
Ctn.Text = datav["item_clsname"].ToString();
Ctn.Value = datav["item_clsno"].ToString();
Ctn.NavigateUrl = "base_item.aspx?id=" + datav["item_clsno"].ToString() + "";
Ctn.Target = "_blank";
tn.ChildNodes.Add(Ctn); } }这样列全部是数字时候没问题,但当有字母时候就报错,说该列无效。