c#动态添加access数据库数据到treeview
private void BindTree()
{
TreeNode root = new TreeNode();
root.Text = "自定义疾病";
DataTable dt = new DataTable();
DataSet ds = GetTreeViewNode1(0);
dt = ds.Tables[0];
if (dt.Rows.Count > 0)
{
foreach (DataRow dr in dt.Rows)
{
TreeNode node = new TreeNode();
node.Text = dr["description"].ToString();
int PID = Convert.ToInt32(dr["aid"]);
DataTable dt1 = new DataTable();
DataSet ds1 = GetTreeviewNodeBySid(PID);
dt1 = ds1.Tables[0];
// dt1 = GetTreeviewNodeBySid(PID);
if (dt1.Rows.Count > 0)
{
foreach (DataRow dr1 in dt1.Rows)
{
int aid1 = Convert.ToInt32(dr1["aid"]);
node.Nodes.Add(CreateTreeNode(aid1));
}
}
root.Nodes.Add(node);
}
treeView1.Nodes.Add(root);
}
}
private TreeNode CreateTreeNode(int Aid)
{
TreeNode node2 = new TreeNode();
DataTable dt1 = new DataTable();
DataSet ds1 = GetTreeviewNodeBySid(Aid);
dt1 = ds1.Tables[0];
//dt1 = GetTreeviewNodeBySid(Aid);
foreach (DataRow dr in dt1.Rows)
{
node2.Text = dr["description"].ToString();
int aID = Convert.ToInt32(dr["aid"]);
DataTable dt = new DataTable();
DataSet ds = GetTreeviewNodeBySid(aID);
dt = ds1.Tables[0];
//dt = GetTreeviewNodeBySid(aID);
if (dt.Rows.Count > 0)
{
foreach (DataRow dr3 in dt1.Rows)
{
int fID2 = Convert.ToInt32(dr3["aid"]);
node2.Nodes.Add(CreateTreeNode(fID2));
}
}
}
return node2;
}
public DataSet GetTreeViewNode1(int num)
{
string sql2 = "select * from SubAnotomical where aid= '" + num + "'";
DataSet ds = AccessFactory.getDataSet(sql2);
return ds;
}
public DataSet GetTreeviewNodeBySid(int num)
{
string sql2 = "select * from SubAnotomical where sid= '" + num + "'";
DataSet ds2 = AccessFactory.getDataSet(sql2);
return ds2;
}
------解决方案--------------------贴一下具体的错误代码吧。
大致步骤没有错。可能是因为数据的原因,比如treeview需要设定一个根节点的,不知道你有没有。
------解决方案--------------------LZ你发错地方了。
------解决方案--------------------
递归函数CreateTreeNode(int Aid)中出现死循环,你前后调用了GetTreeviewNodeBySid 两次,如果节点的ParenetID 有至少两个的话,那么就会出现死循环。
自己设置断点查一下吧。