TreeView绑定数据库
公司:id(int) company(varchar(50)
部门:id(int) deid(int) department(varchar(50))
班组:id(int) coid(int) class(varchar(50))
前台:略
后台代码:
DB DBManager = new DB();//实例化数据库操作类 //链接数据库字段
string strConn = System.Configuration.ConfigurationManager.ConnectionStrings["rizhi"].ConnectionString;
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
//TreeView1.Attributes.Add("onclick", "OnTreeNodeChecked()");
TreeView1.Attributes.Add("onclick", "testClick(event);return true;")
//单击文字,CheckBox=true
TreeView1.ShowCheckBoxes = TreeNodeTypes.Leaf;//最后一级选中
TreeView1.ExpandDepth = 0; //不展开
using (SqlConnection conn = new SqlConnection(strConn))
{
DataSet ds_company = new DataSet();//实例化数据集(公司)
SqlDataAdapter sda_company = new SqlDataAdapter("select * from [company] where id<>"+0+" and id<>"+1001, conn);//实例化数据适配器(公司)
sda_company.Fill(ds_company, "company");//虚拟表填充到内存
for (int i = 0; i < ds_company.Tables["company"].Rows.Count; i++)//循环所有"公司"
{
//【公司名称】
TreeNode td_company = new TreeNode();//实例化公司节点
td_company.Text = ds_company.Tables["company"].Rows[i]["company"].ToString();//公司节点名称
TreeView1.Nodes.Add(td_company);//将公司节点添加至"树"
td_company.SelectAction = TreeNodeSelectAction.Expand;
//【部门名称】
DataSet ds_department = new DataSet();//实例化数据集(部门)
SqlDataAdapter sda_department = new SqlDataAdapter("select * from [department] where [coid]=" + ds_company.Tables["company"].Rows[i]["id"]+" and department<>'全公司'" , conn);//实例化数据库适配器(部门)
sda_department.Fill(ds_department, "department");//虚拟表填充到内存
for (int j = 0; j < ds_department.Tables["department"].Rows.Count; j++)
//循环 ds.Tables["department"].Rows[i]["id"] 对应的所有部门
{
TreeNode td_department = new TreeNode();//实例化部门节点
td_department.Text = ds_department.Tables["department"].Rows[j]["department"].ToString();
//部门节点名称
td_company.ChildNodes.Add(td_department);//填充部门节点至"树"
td_department.SelectAction = TreeNodeSelectAction.Expand;//只允许展开
//【班组】
#region 如果人员属于某个班组 【情况一】
if (DBManager.getDs("select [info] from [user] where [pid]=" + ds_department.Tables["department"].Rows[j]["id"] + "", "is").Tables["is"].Rows.Count == 0)
{
DataSet ds_class = new DataSet();//实例化数据集(班组)
SqlDataAdapter sda_class = new SqlDataAdapter("select * from [class] where [deid]=" + ds_department.Tables["department"].Rows[j]["id"], conn);//实例化数据库适配器(班组)
sda_class.Fill(ds_class, "class");//虚拟表填充到内存
for (int z = 0; z < ds_class.Tables["class"].Rows.Count; z++)//循环 ds_department.Tables["class"].Rows[j]["id"] 对应的所有班组
{
TreeNode td_class = new TreeNode();//实例化班组节点
td_class.Text = ds_class.Tables["class"].Rows[z]["class"].ToString();//班组节点名称
td_department.ChildNodes.Add(td_class);//填充班组节点至"树"
td_class.SelectAction = TreeNodeSelectAction.Expand;//只允许展开
//【人员】
DataSet ds_user = new DataSet();//实例化数据集(人员)
SqlDataAdapter sda_user = new SqlDataAdapter("select [name] from [user] where [pid]=" + ds_class.Tables["class"].Rows[z]["id"] + "", conn);实例化数据库适配器(人员)
sda_user.Fill(ds_user, "user");//虚拟表填充到内存
for (int k = 0; k < ds_user.Tables["user"].Rows.Count; k++)//循环 ds_department.Tables["user"].Rows[k]["name"] 对应的所有人员
{
TreeNode td_user = new TreeNode();//实例化班组节点
td_user.Text = ds_user.Tables["user"].Rows[k]["name"].ToString();//人员节点名称
td_class.ChildNodes.Add(td_user);//填充人员节点至"树"
td_user.NavigateUrl = "javascript:void(0)";//选中,但无效
}
}
}
#endregion
#region 如果人员直接属于某个部门 【情况二】
else
{
DataSet ds_user = new DataSet();
SqlDataAdapter sda_user = new SqlDataAdapter("select [name] from [user] where [pid]=" + ds_department.Tables["department"].Rows[j]["id"] + "", conn);
sda_user.Fill(ds_user, "user");
for (int k = 0; k < ds_user.Tables["user"].Rows.Count; k++)
{
TreeNode td_user = new TreeNode();
td_user.Text = ds_user.Tables["user"].Rows[k]["name"].ToString();
td_department.ChildNodes.Add(td_user);
td_user.NavigateUrl = "javascript:void(0)";
}
}
#endregion
}
}
}
}
}