vs2008 我从 数据库里面把这样的数据放到了datatable里面学校名 牛津大学 班级 小组名 学生名
c1 g1 s1
c1 g1 s2
c2 g3 s3
我对datatable一行一行的处理
怎么得到 牛津大学
c1
g1
s1
s2
g2
s3
这样的形式呢
c1 g1 s1
c1 g1 s2
c2 g3 s3
我对datatable一行一行的处理
怎么得到 牛津大学
c1
g1
s1
s2
g2
s3
这样的形式呢
解决方案 »
- 求C# DataGridView所有操作的例子
- WinForm中如何对多个TextBox进行输入限制(C#)
- 怎么判断在窗体上是否单击了 某个按钮?
- @@@@@c# 中使用hook信息重复怎么解决??? 在线等!!!!!!!
- 刚开始接触C1FlexGrid这个控件,但没有帮助说明,请问哪位有关于它的说明,给我一份吧,谢谢
- 从A LISTBOX添加数据到B listbox 判断B中是否已存在A中的值
- C#笔试题,高分求教,求好心人帮忙!!!!
- 想做一个可视化的网页编辑器
- 请问C#开发的应用程序能否在没装.net framework 的WINDOWS平台上运行?
- 关于动画的问题
- 打算报考成人自考本科,但困惑了.请前辈来批批
- 关于TIMER的菜鸟级问题...10分...
是不是 :牛津大学
--c1
----g1
------s1
------s2
--c2
----g3
------s3
直接嵌套3个list或者repeater
判断小组是否为b
如果为b,则把学生添加到小组下
如果不为b,则新建小组节点,再添加学生
DataTable dt1 = DB.GetTable("select distinct 班级 from table_name");
DataTable dt2 = DB.GetTable("select distinct 班级, 小组 from table_name");
DataTable dt3 = DB.GetTable("select 小组, 学生 from table_name");
StringBuilder sb = new StringBuilder();
foreach(DataRow row1 in dt1.Rows)
{
sb.AppendFormat("<div style='padding-left:10px'>{0}</div>", row1[0]);
DataRow[] rows2 = dt2.Select("班级="+ row1[0]);
foreach(DataRow row2 in rows2)
{
sb.AppendFormat("<div style='padding-left:20px'>{0}</div>", row2[1]);
DataRow[] rows3 = dt3.Select("小组="+ row2[1]);
foreach(DataRow row3 in rows3)
{
sb.AppendFormat("<div style='padding-left:30px'>{0}</div>", row3[1]);
}
}
}
dt.Columns.Add("班级");
dt.Columns.Add("小组名");
dt.Columns.Add("学生名");
dt.Rows.Add("c1", "g1", "s1");
dt.Rows.Add("c1", "g1", "s2");
dt.Rows.Add("c2", "g3", "s3");
DataRow[] rows1 = dt.Select("");
for (int i1 = 0; i1 < rows1.Length; i1++)
{
treeView1.Nodes.Add(rows1[i1]["班级"].ToString());
DataRow[] rows2 = dt.Select("班级='" + rows1[i1]["班级"].ToString() + "'");
for (int i2 = 0; i2 < rows2.Length; i2++)
{
treeView1.Nodes[i1].Nodes.Add(rows1[i2]["小组名"].ToString());
DataRow[] rows3 = dt.Select("小组名='" + rows2[i2]["小组名"].ToString() + "'");
for (int i3 = 0; i3 < rows3.Length; i3++)
{
treeView1.Nodes[i1].Nodes[i2].Nodes.Add(rows3[i3]["学生名"].ToString());
}
}
}
+ 牛津大学
+c1
+g1
s1
s2
+c2
+g3
+s3
点 + 展开。
还有 是直接从
班级 小组名 学生名
c1 g1 s1
c1 g1 s2
c2 g3 s3
这个表 可以扩展出来 对应的班级id,小组id,学生id
这样的表来得到结果。不是楼上说的 三个表。
只要能实现,就可以。请给类似的代码,好吗。
+ 牛津大学
+c1
+g1
s1
s2
+c2
+g3
+s3
点 + 展开。
还有 是直接从
班级 小组名 学生名
c1 g1 s1
c1 g1 s2
c2 g3 s3
这个表 可以扩展出来 对应的班级id,小组id,学生id
这样的表来得到结果。不是楼上说的 三个表。
只要能实现,就可以。请给类似的代码,好吗。
有人说过“三个表”吗?DataTable dt1 = DB.GetTable("select distinct 班级 from table_name");
DataTable dt2 = DB.GetTable("select distinct 班级, 小组 from table_name");
DataTable dt3 = DB.GetTable("select 小组, 学生 from table_name");
StringBuilder sb = new StringBuilder();
foreach(DataRow row1 in dt1.Rows)
{
sb.AppendFormat(" <div style='padding-left:10px'><a href='javascript:show(this,\"{0}\")'>+</a> {0} </div>", row1[0]);
sb.AppendFormat("<div id='div-{0}' style='display:none;'>", row1[0]);
DataRow[] rows2 = dt2.Select("班级="+ row1[0]);
foreach(DataRow row2 in rows2)
{
sb.AppendFormat(" <div style='padding-left:20px'><a href='javascript:show(this,\"{0}\")'>+</a> {0} </div>", row2[1]);
sb.AppendFormat("<div id='div-{0}' style='display:none;'>", row2[1]);
DataRow[] rows3 = dt3.Select("小组="+ row2[1]);
foreach(DataRow row3 in rows3)
{
sb.AppendFormat(" <div style='padding-left:30px'>{0} </div>", row3[1]);
}
sb.Append("</div>");
}
sb.Append("</div>");
} .js
function show(layer, name)
{
var div = document.getElementById(name);
if(div.style.display=="none"){
div.style.display = "";
layer.innerHTML = "-";
}else{
div.style.display = "none";
layer.innerHTML = "+";
}
}
var div = document.getElementById(name);
==>
var div = document.getElementById("div-"+ name);
班级 小组名 学生名
c1 g1 s1
c1 g1 s2
c2 g3 s3
没办法做成 三个 datatable,因为这个datatable已经是 n个表结合的结果了。
不知道这样怎么实现。非常感谢楼上的。
dt.Columns.Add("班级");
dt.Columns.Add("小组名");
dt.Columns.Add("学生名");
dt.Rows.Add("c1", "g1", "s1");
dt.Rows.Add("c1", "g1", "s2");
dt.Rows.Add("c2", "g3", "s3");
DataRow[] rows1 = dt.Select("");
treeView1.Nodes.Add("牛津大学");
for (int i1 = 0; i1 < rows1.Length; i1++)
{
treeView1.Nodes[0].Nodes.Add(rows1[i1]["班级"].ToString());
DataRow[] rows2 = dt.Select("班级='" + rows1[i1]["班级"].ToString() + "'");
for (int i2 = 0; i2 < rows2.Length; i2++)
{
treeView1.Nodes[0].Nodes[i1].Nodes.Add(rows1[i2]["小组名"].ToString());
DataRow[] rows3 = dt.Select("小组名='" + rows2[i2]["小组名"].ToString() + "'");
for (int i3 = 0; i3 < rows3.Length; i3++)
{
treeView1.Nodes[0].Nodes[i1].Nodes[i2].Nodes.Add(rows3[i3]["学生名"].ToString());
}
}
}