using System;
using System.IO;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Globalization;
using System.Text;
public partial class _Default : System.Web.UI.Page
{
SqlConnection sqlCon = new SqlConnection(@"server=.;database=Test;Trusted_Connection=True");
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
DeptTree(15);
}
}
public DataSet dsDataBind(string sqlSelect)
{
SqlDataAdapter da = new SqlDataAdapter(sqlSelect, sqlCon);
DataSet ds = new DataSet();
da.Fill(ds);
return ds;
}
protected TreeNode DeptTree(int gradeCount) //gradecount为最大的层数
{
DataSet ds = dsDataBind("select * from tb_Department order by fdeptid asc");
string id, name;
int grade;
TreeNode[] tn = new TreeNode[gradeCount];
TreeNode tree = new TreeNode();
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
name = ds.Tables[0].Rows[i]["fdeptname"].ToString();
id = ds.Tables[0].Rows[i]["fdeptid"].ToString();
grade = Convert.ToInt32(ds.Tables[0].Rows[i]["fgrade"].ToString());
if (grade == 0)
{
tn[grade] = new TreeNode(name, id);
TreeView1.Nodes.Add(tn[0]);
PostTree(tn[grade],gradeCount, id);
}
else
{
tn[grade] = new TreeNode(name, id);
tn[grade - 1].ChildNodes.Add(tn[grade]);
PostTree(tn[grade],gradeCount, id);
}
}
return tn[0];
}
protected void PostTree(TreeNode node,int gradeCount,string fdeptid) //gradecount为最大的层数
{
DataSet ds = dsDataBind("select * from tb_Post where fdeptid='"+fdeptid +"' order by fdeptid asc");
string id, postName, userName;
int grade,total;
TreeNode[] tn = new TreeNode[gradeCount];
TreeNode tree = new TreeNode();
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
postName = ds.Tables[0].Rows[i]["fpostname"].ToString();
id = ds.Tables[0].Rows[i]["fpostid"].ToString();
grade = Convert.ToInt32(ds.Tables[0].Rows[i]["fsamedeptGrade"].ToString());
DataSet userds = dsDataBind("select * from tb_User where fpostid ='" + id + "'and fdeptid ='" + fdeptid + "'");
if (userds.Tables[0].Rows.Count == 0)
{
userName = "空";
string newName = postName + "[" + userName + "]";
if (grade == 0)
{
tn[grade] = new TreeNode(newName, id);
node.ChildNodes.Add(tn[grade]); //为当前部门节点添加父级岗位节点
}
else
{
tn[grade] = new TreeNode(newName, id);
tn[grade - 1].ChildNodes.Add(tn[grade]); //为父级岗位节点添加子节点
}
}
else
{
total = userds.Tables[0].Rows.Count;
string newName = postName + "[共" + total + "人]";
if (grade == 0)
{
tn[grade] = new TreeNode(newName, id);
node.ChildNodes.Add(tn[grade]); //为当前部门节点添加父级岗位节点
UserNode(tn[grade], id, fdeptid);
}
else
{
tn[grade] = new TreeNode(newName, id);
tn[grade - 1].ChildNodes.Add(tn[grade]); //为父级岗位节点添加子节点
UserNode(tn[grade], id, fdeptid);
}
}
}
}
public void UserNode(TreeNode node, string fpostid,string fdeptid) //取出tb_user表中的user
{
DataSet ds = dsDataBind("select * from tb_User where fpostid ='" + fpostid + "'and fdeptid ='" + fdeptid + "'");
if (ds.Tables[0].Rows.Count != 0)
{
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
TreeNode tn = new TreeNode();
tn.Text = ds.Tables[0].Rows[i]["fname"].ToString();
tn.Value = ds.Tables[0].Rows[i]["fuserid"].ToString();
node.ChildNodes.Add(tn);
}
}
}
}