我有一个数据库中的两个表,分别是atable和btable,具体结构和数据如下atableaid atitle
1 xiaowang
2 xiaoli
3 xiaozhou
...btable
bid btitle aid bpid
1 chifan 1 0
2 cfdfan 1 1
3 fdsafn 3 0
4 434432 2 0
5 czxvvn 2 4
6 ioiuoo 1 1
7 yreyyy 1 0atable是一个栏目,btable是这个栏目下面的每个节点,而且每个节点下面还有节点的,其中bpid是0的为母节点,不为0的都是子节点,子节点的bpid对应的是母节点的bid,我想实现如下功能,作为一个目录树,给列举出来所有的内容,形式如下xiaowang(栏目)
--chifan(母节点bid是1)
----chifan(子节点bid是2)
----ioiuoo(子节点bid是6)
--yreyyy(母节点bid是7)
xiaoli(栏目)
--434432(母节点bid是4)
----czxvvn(子节点bid是5)
xiaozhou(栏目)
--fdsafn(母节点bid是3)请问这个该怎么做呢?
1 xiaowang
2 xiaoli
3 xiaozhou
...btable
bid btitle aid bpid
1 chifan 1 0
2 cfdfan 1 1
3 fdsafn 3 0
4 434432 2 0
5 czxvvn 2 4
6 ioiuoo 1 1
7 yreyyy 1 0atable是一个栏目,btable是这个栏目下面的每个节点,而且每个节点下面还有节点的,其中bpid是0的为母节点,不为0的都是子节点,子节点的bpid对应的是母节点的bid,我想实现如下功能,作为一个目录树,给列举出来所有的内容,形式如下xiaowang(栏目)
--chifan(母节点bid是1)
----chifan(子节点bid是2)
----ioiuoo(子节点bid是6)
--yreyyy(母节点bid是7)
xiaoli(栏目)
--434432(母节点bid是4)
----czxvvn(子节点bid是5)
xiaozhou(栏目)
--fdsafn(母节点bid是3)请问这个该怎么做呢?
解决方案 »
- C#TreeView右键直接删除节点
- webBrowser 获取参数问题
- c#调用内存泄露的dll,能否在调用后释放刚刚dll所使用的所有内存
- Winform树形菜单和文件读写
- 关于Try的问题
- 为什么要这么定义:(textBox) Tbox =(textBox)sender;
- form窗体能不能 透明?
- 安装打包的疑惑。。。。。。。。。。。
- 急!高分求解,关于调用COM+组件方法的问题
- 在C#中如何实现子窗体,即像VB6中的MdiForm,子窗体嵌入在主窗体中。谢谢!
- 水晶报表crystal reportrs
- 我串口有数据时,DataReceived(object sender,SerialDataReceivedEventArgs e)这个响应函数好像没有运行
{
IEnumerable<ATable> collA = GetATableData(); // 获取ATable中所有的记录
IEnumerable<BTable> collB = GetBTableData(); // 获取BTable中的所有记录 tv.BeginUpdate();
tv.Nodes.Clear(); foreach (ATable atable in collA)
{
TreeNode node = new TreeNode(atable.atitle);
tv.Nodes.Add(node);
BuildTree(node.Nodes, atable.aid, 0, collB);
} tv.EndUpdate();
}function BuildTree(TreeNodeCollection nodes, int aid, int bpid, IEnumerable<BTable> dataSource)
{
foreach (BTable btable in dataSource.Where(o => o.aid == aid && o.bpid == bpid))
{
TreeNode node = new TreeNode(btable.btitle);
nodes.Add(node);
BuildTree(node.Nodes, aid, btable.bid, dataSource);
}
}
{
IEnumerable<ATable> collA = GetATableData(); // 获取ATable中所有的记录
IEnumerable<BTable> collB = GetBTableData(); // 获取BTable中的所有记录 tv.BeginUpdate();
tv.Nodes.Clear(); foreach (ATable atable in collA)
{
TreeNode node = new TreeNode(atable.atitle);
tv.Nodes.Add(node);
BuildTree(node.Nodes, atable.aid, 0, collB);
} tv.EndUpdate();
}private void BuildTree(TreeNodeCollection nodes, int aid, int bpid, IEnumerable<BTable> dataSource)
{
foreach (BTable btable in dataSource.Where(o => o.aid == aid && o.bpid == bpid))
{
TreeNode node = new TreeNode(btable.btitle);
nodes.Add(node);
BuildTree(node.Nodes, aid, btable.bid, dataSource);
}
}
aid是atable中的主键,是和btable形成关系的键
Web里也有TreeView控件的,用法差不多。
string sql="select atable.atitle,btable.* from atable,
btable where atable.aid=btable.aid"
runsql(sql)while (Reader.read())
{
把节点加进去
}