【winform】我这个treeview为什么只能从数据库调用根节点?
数据库表如下这是代码:
Namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
private DataTable dt = null;
public Form1()
{
InitializeComponent();
InitDataTable();
}
//获取Area所用数据
private void InitDataTable()
{
SqlConnection conn = new SqlConnection("Data source=(local);Initial Catalog=TreeViewTest;User ID=sa;Pwd=ABCabc01");
SqlCommand cmd = new SqlCommand("SELECT * FROM Area", conn);
SqlDataAdapter ada = new SqlDataAdapter(cmd);
dt = new DataTable();
ada.Fill(dt);
}
private void Form1_Load(object sender, EventArgs e)
{
BindRoot();
}
//绑定根节点
private void BindRoot()
{
DataRow[] rows = dt.Select("fAreaId=-1");//取根
foreach (DataRow dRow in rows)
{
TreeNode rootNode = new TreeNode();
rootNode.Tag = dRow;
rootNode.Text = dRow["AreaName"].ToString();
treeView1.Nodes.Add(rootNode);
BindChildAreas(rootNode);
}
}
//递归绑定子区域
private void BindChildAreas(TreeNode fNode)
{
DataRow dr = (DataRow)fNode.Tag;//父节点数据关联的数据行
int fAreaId = (int)dr["id"]; //父节点ID
DataRow[] rows = dt.Select("fAreaId=" + fAreaId);//子区域
if (rows.Length == 0)//递归终止,区域不包含子区域时
{
return;
}
foreach (DataRow dRow in rows)
{
TreeNode node = new TreeNode();
node.Tag = dRow;
node.Text = dRow["AreaName"].ToString();
//添加子节点
fNode.Nodes.Add(node);
//递归
BindChildAreas(node);
}
}
}
}
运行后只能生成根节点,下面的子节点为什么都不见了?改怎么改才好?
谢谢!
DataRow dr = (DataRow)fNode.Tag;//父节点数据关联的数据行
这里有问题
会出现转化无效的错误
页:
[1]