C# treeview 递归绑定数据

我的数据库tb_table表中有这么几个字段id(int)name(varchar)varid(varchr)1部门0012技术部0010013市场部0010024技术1... 我的数据库tb_table表中有这么几个字段
id(int) name(varchar) varid(varchr)
1 部门 001
2 技术部 001001
3 市场部 001002
4 技术1部 001001001
5 技术2部 001001002
6 技术3部 001001003
7 市场1部 001002001
8 市场2部 001002002
9 市场3部 001002003
怎么用treeview递归树形绑定达到下面的效果:
部门
技术部
技术1部
技术2部
技术3部
市场部
市场1部
市场2部
市场3部

麻烦各位说具体详细点,在此谢谢
最好带上后台代码
展开
 我来答
ynwanghua
2010-06-28
知道答主
回答量:17
采纳率:0%
帮助的人:0
展开全部
{
SqlDataAdapter adp= new SqlDataAdapter("select * from tb_table", connString);
DataTable dtData=new DataTable();
adp.Fill(dtData);
TreeView tv;//树控件
tv.Nodes.Clear();
// 获得第一级数据
DataRow[] drRoot=dtData.Select("len(varid)=3");
foreach(DataRow dr in drRoot)
{
TreeNode tn=new TreeNode();
tn.Text=dr["Name"].ToString();
AppendChild(tn,dr["varid"].ToString());
tv.Nodes.Add(tn);
}
}
// 递归绑定数据
Private void AppendChild(TreeNode tnParent,string varid)
{
DataRow[] drs=dtData.Select("substring(varid,0,"+varid.length+" and len(varid)="+varid.length+3));
foreach(DataRow dr in drs)
{
TreeNode tn=new TreeNode();
tn.Text=dr["Name"].ToString();
AppendChild(tn,dr["varid"].ToString());
tnParent.ChildNodes.Add(tn);
}
}

大概意思就是这样,自己拿去修改一了试试看
ngood
2010-06-28
知道答主
回答量:24
采纳率:0%
帮助的人:0
展开全部
using System.Data.OleDb;

public partial class Tree : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
try
{
if (!Page.IsPostBack)
{
TreeViewNodeBind();
}
}
catch (Exception ex)
{
Response.Write(ex.Message);
}

}

private void TreeViewNodeBind()
{

string strCon = " Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source = " + MapPath("") + "\\ExcelFile\\Test2.xls;Extended Properties=Excel 8.0";
OleDbConnection myConn = new OleDbConnection(strCon);
string strCom = " SELECT * FROM [Sheet2$]";
myConn.Open();
//打开数据链接,得到一个数据集
OleDbDataAdapter myCommand = new OleDbDataAdapter(strCom, myConn);
//创建一个 DataSet对象
DataSet myDataSet = new DataSet();
//得到自己的DataSet对象
myCommand.Fill(myDataSet, "[Sheet2$]");
//关闭此数据链接
myConn.Close();
DataTable dtP = myDataSet.Tables[0];
DataRow[] drP;
trvwReport.Nodes.Clear();

if (dtP.Rows.Count > 0)
{

}
else
return;

//加载节点,找出根节点
drP = dtP.Select("parentid='1'");
foreach (DataRow dr in drP)
{
TreeNode tnPP = new TreeNode();
tnPP.Text = dr["NodeName"].ToString();
tnPP.Value = dr["childID"].ToString();
if (dr["NavigateUrl"].ToString() != "")
{
tnPP.NavigateUrl = dr["NavigateUrl"].ToString();
tnPP.Target = "Main";
tnPP.ToolTip = dr["tooltip"].ToString();
}
trvwReport.Nodes.Add(tnPP);
TreeRules(dtP, tnPP, dr["childID"].ToString());

}
}
//递归方法
private void TreeRules(DataTable dtP, TreeNode tnP, string strChildID)
{
DataRow[] drC;
drC = dtP.Select("parentid='" + strChildID + "'");
if (drC.Length > 0)
{
foreach (DataRow drr in drC)
{
TreeNode tnC = new TreeNode();
tnC.Text = drr["NodeName"].ToString();
tnC.Value = drr["childID"].ToString();
if (drr["NavigateUrl"].ToString() != "")
{
tnC.NavigateUrl = drr["NavigateUrl"].ToString();
tnC.Target = "Main";
tnC.ToolTip = drr["tooltip"].ToString();
}
tnP.ChildNodes.Add(tnC);
//有节点,递归
TreeRules(dtP, tnC, drr["childID"].ToString());
}
}
else
{
return;
}
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
火娃烤红薯Dd
2010-06-28
知道答主
回答量:1
采纳率:0%
帮助的人:0
展开全部
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
TreeNode parentnode = new TreeNode();
parentnode.Text = "树状结构";
TreeView1.Nodes.Add(parentnode);
AddChildNode(parentnode, "0");
}
}

public void AddChildNode(TreeNode pnode, string id)
{
SqlConnection conn = new SqlConnection("Data Source=.;Initial Catalog=myBlog;Persist Security Info=True;User ID=sa;Pwd=sa");
SqlDataAdapter da = new SqlDataAdapter("select * from tb where pid="+id, conn);
DataSet ds = new DataSet();
da.Fill(ds);

for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
TreeNode node = new TreeNode();
node.Text = ds.Tables[0].Rows[i]["name"].ToString();
node.NavigateUrl = ds.Tables[0].Rows[i]["url"].ToString();

pnode.ChildNodes.Add(node);

AddChildNode(node, ds.Tables[0].Rows[i]["id"].ToString());
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式