有一个表,表名:一年级,有两字段:班级与学生姓名
班级 学生姓名
一班 同学A
一班 同学B
一班 同学C
.......
二班 同学名1
二班 同学名2
.......
现在想生成类似下面的树:一年级
|
|____一班
| |___同学A
| |___同学B
| |___同学C
|
|_____二班
|___同学1
|___同学2实际的表中有若干班级,每班有数十学生.
在ASP.NET中用C#怎么生成这个树?求完整具体代码。
班级 学生姓名
一班 同学A
一班 同学B
一班 同学C
.......
二班 同学名1
二班 同学名2
.......
现在想生成类似下面的树:一年级
|
|____一班
| |___同学A
| |___同学B
| |___同学C
|
|_____二班
|___同学1
|___同学2实际的表中有若干班级,每班有数十学生.
在ASP.NET中用C#怎么生成这个树?求完整具体代码。
解决方案 »
- 用asp.net mvc 搭建android服务器端可行吗
- Asp.net中使用Jquery问题,大家帮忙看看吧
- 高分求asp.net中用gridview手动分页方法原码,
- 缓存的基础问题!
- 2005设计时,打开we.config或者web.sitemap为什么这么慢?
- 一个小问题的讨论,我用 dataReader 把数据记录 从 数据库提取出来后 , 要显示到客户端 ,这个时候我是用 DataList ,repeater .服务器端绑定,还是采用 数据记录+ html 混合在一起 ,而后赋给一个Div的innerHtm
- 使用母板页的问题,谢谢
- 攒了1000分问个小问题
- 在vs.net中无法创建web项目 ,求助
- 使用SQL sever2005还原备份的数据库文件出现错误,高手帮我看看吧,我是菜鸟·
- 如何连接做的各个网站(在线等大家帮忙),急急急
- 存储过程里面有很多小表,怎样显示出来?
{
TreeNode tnGrade = new TreeNode();
tnGrade.Text = "一年级";
tnGrade.Expanded = true;
GenerateGrade(tnGrade.Nodes);
this.tvGrade.Nodes.Add(tnGrade);
}private void GenerateGrade(TreeNodeCollection tnc)
{
SqlConnection conn = null;
SqlDataReader dr = null; try
{
conn = new SqlConnection("Server=(local);Database=Northwind;uid=sa;password=sa");
SqlCommand cmd = new SqlCommand("SELECT DISTINCT 班级 FROM 一年级", conn);
conn.Open();
dr = cmd.ExecuteReader();
while (dr.Read())
{
TreeNode tnClass = new TreeNode();
tnClass.Text = dr.GetString(0);
tnClass.Expanded = true;
tnc.Add(tnClass);
}
dr.Close(); foreach (TreeNode tnClass in tnc)
{
cmd.CommandText = "SELECT 学生姓名 FROM 一年级 WHERE 班级='" + tnClass.Text + "'";
dr = cmd.ExecuteReader();
while (dr.Read())
{
TreeNode tnStudent = new TreeNode();
tnStudent.Text = dr.GetString(0);
tnClass.Nodes.Add(tnStudent);
}
dr.Close();
}
}
finally
{
if (dr != null)
{
dr.Close();
}
if (conn != null)
{
conn.Close();
}
}
}
我就不贴了,顶一下
{// SELECT ID, Name, Address, City, Fax FROM Customer ORDER BY City, Name, ID
this.tv1.Nodes.Clear();
string ntext = "";
int i = 0; this.cmdSql.Connection.Open();
System.Data.SqlClient.SqlDataReader rd = this.cmdSql.ExecuteReader();
while( rd.Read() )
{
if( rd["City"].ToString() != ntext )
{
ntext = rd["City"].ToString();
TreeNode fnode = new TreeNode(ntext);
this.tv1.Nodes.Add(fnode);
i++;
}
//上面的条件判断在第一个部门和每次遇到新部门的时候执行
if( rd["City"].ToString() == ntext )
{
TreeNode snode = new TreeNode(rd["Name"].ToString());
snode.Tag = rd["ID"].ToString();
this.tv1.Nodes[i-1].Nodes.Add(snode);
}
}
rd.Close();
this.cmdSql.Connection.Close();
this.NoDo();
}
还是用我的吧
表建的时候用递归,可以设计无限级
sNo, sName, parentNo
然后用下面的
调用
public void LoadTree(Microsoft.Web.UI.WebControls.TreeView tvwStudents,string strPersonNo)
{
IInitStudentsTree(tvwStudents.Nodes,"0");
}//功能树//建树的基本思路是:从根节点开始递归调用显示子树
private void InitStudentsTree(TreeNodeCollection Nds,string strParentNo)
{
DataView dv=new DataView();
TreeNode tmpNd;
dv.Table=man.GetDs("tree","Select * From students").Tables["tree"];
dv.RowFilter="ParentNo='" + strParentNo + "'" ;
foreach(DataRowView drv in dv)
{
tmpNd=new TreeNode();
tmpNd.ID=drv["sNo"].ToString();
tmpNd.Text=drv["sName"].ToString();
tmpNd.ImageUrl = "../../images/icon/Function.bmp";
Nds.Add(tmpNd);
tmpNd.Expanded=true;
tmpNd.CheckBox =true;
InitStudentsTree(tmpNd.Nodes,tmpNd.ID);
}
}