请问,我要用C# winform的treeview动态绑定sql数据库

请问,我要用C#winform的treeview动态绑定sql数据库,前提是只知道数据库的名字,怎么动态绑定库里所有的表及表对应的所有字段。。请高手帮忙啊。。。。。。。。... 请问,我要用C# winform的treeview动态绑定sql数据库,前提是只知道数据库的名字,怎么动态绑定库里所有的表及表对应的所有字段。。
请高手帮忙啊。。。。。。。。。。谢谢
展开
 我来答
xixi_haha_123
2008-04-12
知道答主
回答量:2
采纳率:0%
帮助的人:0
展开全部
我以例子来说吧
先建一个数据库Test,里面建一个表Project
表中 id字段(主键,标识列,int),pid字段(int,允许空),tname字段(varchar,50,允许空)
输入一些数据:
Id pid tname
1 0 食品
2 0 生活用品
3 0 学习用品
4 1 面食
5 1 膨化食品
6 1 熟食
7 1 冰激凌
8 4 糕点
9 4 主食
10 2 卫生用品
11 2 生活用具
12 3 笔类
13 3 纸类
14 3 工具类
界面:一个TreeView
代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;

namespace MyProjectTree
{
public partial class Form1 : Form
{
SqlConnection conn = new SqlConnection("server=.;uid=sa;pwd=;database=test");
SqlDataAdapter dtd;
DataSet ds;
DataView dv;//表示用于排序、筛选、搜索、编辑和导航的System.Data.DataTable+的可绑定数据的自定义视图
private TreeNode Node;
public Form1()
{
InitializeComponent();
}
//自定义方法
private void GetData(int pid, TreeNode pnode)
{
dv = ds.Tables[0].DefaultView;//获取可能包括筛选视图或游标位置的表的自定义视图
dv.RowFilter = "pid=" + pid;
int dvC = dv.Count;
if (pnode == null)
{
int i = 0;
while (i < dvC)
{
dv = ds.Tables[0].DefaultView;
dv.RowFilter = "pid=" + pid;

TreeNode node = new TreeNode();
node.Text = dv[i]["tname"].ToString();
node.Tag = int.Parse(dv[i]["id"].ToString());

this.treeView1.Nodes.Add(node);

GetData((int)node.Tag, node);
i++;
}
}
else
{
int i = 0;
while (i < dvC)
{
dv = ds.Tables[0].DefaultView;
dv.RowFilter = "pid=" + pid;

TreeNode node = new TreeNode();
node.Text = dv[i]["tname"].ToString();
node.Tag = int.Parse(dv[i]["id"].ToString());

pnode.Nodes.Add(node);

GetData(int.Parse(dv[i]["id"].ToString()), node);
i++;
}
}
}

private void Form1_Load(object sender, EventArgs e)
{
dtd = new SqlDataAdapter("select * from [project] order by id", conn);
ds = new DataSet();
dtd.Fill(ds, "test");
GetData(0, null);
}
这个程序是用,net2005做的
bomanna
2008-03-31 · TA获得超过425个赞
知道小有建树答主
回答量:446
采纳率:0%
帮助的人:257万
展开全部
DataTable dt = new DataTable();
for (Int32 i = 0; i < dt.Columns; i++)
{
TreeNode tn = new TreeNode();
tn.Name = dt.Rows[i][0].ToString();
tn.Text = dt.Rows[i][1].ToString();
treeView1.Nodes.Add(tn);
}
要是无限添加的话就再加个方法就好了
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cnmahj
2008-03-31 · TA获得超过954个赞
知道小有建树答主
回答量:785
采纳率:0%
帮助的人:1061万
展开全部
这样就应该可以了。

string sql="select name from sysobject where xtype ='U'";
SqlDataAdapter adapter = new SqlDataAdapter(sql, conn);
adapter.Fill(resultDS, "sysobject");

foreach(DataRow row in resultDS.Talbes["sysobject"].Rows)
{
sql="Select top 1 * From "+row["Name"].ToString();
adapter = new SqlDataAdapter(sql, conn);
adapter.Fill(resultDS, row["Name"].ToString());
TreeNode tn = new TreeNode();
tn.Name = row["Name"].ToString();
tn.Text = row["Name"].ToString();
treeView1.Nodes.Add(tn);
foreach(DataColumn col in resultDS.Talbes[row["Name"].ToString()].Columns)
{
TreeNode subtn = new TreeNode();
subtn.Name = col.ColumnName;
subtn.Text = col.ColumnName;
tn.Nodes.Add(subtn );
}

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ainiliyang520
2008-04-08 · 超过12用户采纳过TA的回答
知道答主
回答量:81
采纳率:0%
帮助的人:49.7万
展开全部
用第归算法种书是最好的方法了。具体做法自己有心去研究研究吧.方法调用自己方法.提醒一下.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式