读取数据库绑定到Treeview的问题,求高手指点
代码如下:using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using System.Data;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
SqlConnection conn = new SqlConnection(@"server=192.168.0.226;database=discuz;uid=sa;pwd=841102");
conn.Open();
string sqltxt = @"select layer,name from dnt_forums";
SqlCommand cmd = new SqlCommand(sqltxt, conn);
SqlDataReader myread=cmd.ExecuteReader();
DataTable dt = new DataTable();
dt = ConvertToDataTable(myread);
TreeViewBind(dt);
}
private void TreeViewBind(DataTable dt)
{
DataRow[] rows = dt.Select("layer =0");
foreach (DataRow drv in rows)
{
TreeNode node = new TreeNode();
node.Text = drv["name"].ToString();
node.Value = drv["layer"].ToString();
node.NavigateUrl = "AddAdmin.aspx?id=" + node.Value;
node.Target = "info";
node.Expanded = false;
TreeView1.Nodes.Add(node);
}
TreeView1.DataBind();
}
private void Addchildtree(DataTable dt, TreeNode node)
{
DataRow[] rows = dt.Select("layer=1");
foreach (DataRow row in rows)
{
TreeNode childnode = new TreeNode();
childnode.Text = row["name"].ToString();
childnode.Value = row["layer"].ToString();
childnode.NavigateUrl = "AddAdmin.aspx?id=" + childnode.Value;
childnode.Target = "info";
childnode.Expanded = false;
node.ChildNodes.Add(childnode);
Addchildtree(dt, childnode);
}
}
public DataTable ConvertToDataTable(SqlDataReader dataReader)
{
DataTable dt = new DataTable();
DataTable schemaTable = dataReader.GetSchemaTable();
try
{
//动态构建表,添加列
foreach (DataRow dr in schemaTable.Rows)
{
DataColumn dc = new DataColumn();
//设置列的数据类型
dc.DataType = dr[0].GetType();
//设置列的名称
dc.ColumnName = dr[0].ToString();
//将该列添加进构造的表中
dt.Columns.Add(dc);
}
//读取数据添加进表中
while (dataReader.Read())
{
DataRow row = dt.NewRow();
//填充一行数据
for (int i = 0; i < schemaTable.Rows.Count; i++)
{
row[i] = dataReader[i].ToString();
}
dt.Rows.Add(row);
row = null;
}
dataReader.Close();
schemaTable = null;
return dt;
}
catch (Exception ex)
{
//抛出异常
throw new Exception(ex.Message);
}
}
}
现在能绑定根节点并显示,但是子节点要怎么调用搞不懂,Addchildtree()这个方法怎么用? --------------------编程问答-------------------- 这个刚好适合:
WinForm中TreeView数据绑定 --------------------编程问答-------------------- 子节点要在添加一个父节点的时候调用 --------------------编程问答--------------------
能不能具体说下要怎么用?我是新手+自学,没人指导,学得好吃力
--------------------编程问答--------------------
谢谢这位大哥,我好好看下 --------------------编程问答--------------------
--------------------编程问答-------------------- private void TreeViewBind(DataTable dt)
{
DataRow[] rows = dt.Select("layer =0");
foreach (DataRow drv in rows)
{
TreeNode node = new TreeNode();
node.Text = drv["name"].ToString();
node.Value = drv["layer"].ToString();
node.NavigateUrl = "AddAdmin.aspx?id=" + node.Value;
node.Target = "info";
node.Expanded = false;
TreeView1.Nodes.Add(node);
Addchildtree(dt,node);
}
TreeView1.DataBind();
}
补充:.NET技术 , C#