我是新人,问题很弱,不好意思了!我有两张表,公司表和部门表,通过部门表里 company_id联系起来
要生成树,父节点 公司名称,子节点 部门名称.求代码,(2个嵌套的for循环也可以`我做的总是在生成第二个公司的部门时也把第一个公司的部门全部显示了) private void FmMain_Load(object sender, System.EventArgs e)
{
TreeNode node;
dealTree.BulidTree(); //此方法生成数据集
int i ;
for( i= 0 ; i < dealTree.ds.Tables["CompanyName"].Rows.Count ; i++)
{
//添加公司
node= new TreeNode();
node.Text =dealTree.ds.Tables["CompanyName"].Rows[i]["Company_Name"].ToString();
node.Tag = dealTree.ds.Tables["CompanyName"].Rows[i]["Company_ID"].ToString();
this.trvInfor.Nodes.Add(node);
//添加部门
dealTree.BulidTree(node.Tag.ToString());
for(int j= 0 ; j <dealTree.ds.Tables["DepartmentName"].Rows.Count ; j++)
{
node= new TreeNode();
node.Text =dealTree.ds.Tables["DepartmentName"].Rows[j]["Department_Name"].ToString();
node.Tag = dealTree.ds.Tables["DepartmentName"].Rows[j]["Department_ID"].ToString();
this.trvInfor.Nodes[i].Nodes.Add(node);
}
}
要生成树,父节点 公司名称,子节点 部门名称.求代码,(2个嵌套的for循环也可以`我做的总是在生成第二个公司的部门时也把第一个公司的部门全部显示了) private void FmMain_Load(object sender, System.EventArgs e)
{
TreeNode node;
dealTree.BulidTree(); //此方法生成数据集
int i ;
for( i= 0 ; i < dealTree.ds.Tables["CompanyName"].Rows.Count ; i++)
{
//添加公司
node= new TreeNode();
node.Text =dealTree.ds.Tables["CompanyName"].Rows[i]["Company_Name"].ToString();
node.Tag = dealTree.ds.Tables["CompanyName"].Rows[i]["Company_ID"].ToString();
this.trvInfor.Nodes.Add(node);
//添加部门
dealTree.BulidTree(node.Tag.ToString());
for(int j= 0 ; j <dealTree.ds.Tables["DepartmentName"].Rows.Count ; j++)
{
node= new TreeNode();
node.Text =dealTree.ds.Tables["DepartmentName"].Rows[j]["Department_Name"].ToString();
node.Tag = dealTree.ds.Tables["DepartmentName"].Rows[j]["Department_ID"].ToString();
this.trvInfor.Nodes[i].Nodes.Add(node);
}
}
{
string strConn,sql;
strConn = @"server=cn110075\sql2000; database = Northwind; uid = chang; pwd=chang;";
sql= "select * from company order by companyName;";
sql += "select a.* from department a ";
sql += "left join company b ";
sql += "on a.companyId = b.companyId ";
sql += "order by b.companyName, a.departmentName"; DataSet ds = new DataSet();
SqlConnection conn = new SqlConnection(strConn);
SqlDataAdapter da = new SqlDataAdapter(sql, conn);
int k=0; conn.Open();
da.Fill(ds);
conn.Close(); for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
Microsoft.Web.UI.WebControls.TreeNode nd = new Microsoft.Web.UI.WebControls.TreeNode();
nd.Text = ds.Tables[0].Rows[i]["companyName"].ToString();
nd.NodeData = ds.Tables[0].Rows[i]["companyId"].ToString(); TreeView1.Nodes.Add(nd); for (int j =k; j < ds.Tables[1].Rows.Count; j++)
{
if (int.Parse(nd.NodeData) == int.Parse(ds.Tables[1].Rows[j]["companyId"].ToString()))
{
Microsoft.Web.UI.WebControls.TreeNode item = new Microsoft.Web.UI.WebControls.TreeNode();
item.Text = ds.Tables[1].Rows[j]["departmentName"].ToString();
item.NodeData = ds.Tables[1].Rows[j]["departmentId"].ToString(); nd.Nodes.Add(item);
}
else
{
k = j ;
break;
}
} }}
sql += "select a.* from department a ";
sql += "left join company b ";
sql += "on a.companyId = b.companyId ";
sql += "order by b.companyName, b.companyId, a.departmentName";