求ASP.NET TREEVIEW动态加载数据库代码

tq84020519 2009-08-15 07:56:25
数据库表结构为ID,NAME,PARENTID
例如:
01 福建 0
02 河北 0
020 石家庄 02
010 厦门 01
...全文
992 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
tq84020519 2009-08-16
  • 打赏
  • 举报
回复
提示无法将NVARCHAR类型转换为INT类型,期待大侠指点
tq84020519 2009-08-15
  • 打赏
  • 举报
回复
protected void Page_Load(object sender, EventArgs e)
{
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);

}



}

这样列全部是数字时候没问题,但当有字母时候就报错,说该列无效。
wuyq11 2009-08-15
  • 打赏
  • 举报
回复
递归绑定数据集到treeview
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);
}
}

参考
  • 打赏
  • 举报
回复
希望对你有用

protected void Page_Load(object sender,EventArgs e)
{
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);
}
}
}
fengying0529 2009-08-15
  • 打赏
  • 举报
回复

这是我自己写的 你自己再改改吧

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());
}
}
pt1314917 2009-08-15
  • 打赏
  • 举报
回复
。。。
IHandler 2009-08-15
  • 打赏
  • 举报
回复
IHandler 2009-08-15
  • 打赏
  • 举报
回复
用一个方法按规律递归,可以google一下

62,261

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧