DDLDepart.Items.Insert(0, new ListItem("请选择部门名称", "-1"));
BindDepartment()
/// <summary>
/// 绑定部门树
/// </summary>
private void BindDepartment()
{
SqlDepartment SqlDepart = new SqlDepartment();
var TypeList = SqlDepart.GetDepartment(); //此处用的是linq返回的是整个部门表
if (!IsPostBack)
{
DataTable datatable = TypeList.ToDataTable(); 将linq得到的表转换成datatable
DataRow[] row = datatable.Select("Parentcode=0"); //选取根节点
//添加根目录
for (int i = 0; i <= row.Length - 1; i++)
{
ListItem li = new ListItem();
li.Text = row[i]["Departname"].ToString();
li.Value = row[i]["Departid"].ToString();
DDLDepart.Items.Add(li);
AddOtherDll("", Convert.ToInt32(row[i]["PKID"]), datatable, 1); //添加根节点
}
}
}
/// <summary>
/// 添加其他节点
/// </summary>
/// <param name="Pading">空格</param>
/// <param name="DirId">父路径ID</param>
/// <param name="datatable">返回的datatable</param>
/// <param name="deep">树形的深度</param>
private void AddOtherDll(string Pading, int DirId, DataTable datatable, int deep)
{
DataRow[] rowlist = datatable.Select("Parentcode='" + DirId + "'");
foreach (DataRow row in rowlist)
{
SqlAssetType sql = new SqlAssetType();
string strPading = "";
for (int j = 0; j < deep; j++)
{
strPading += " "; //用全角的空格
}
//添加节点
ListItem li = new ListItem();
li.Text = strPading + " " + row["Departname"].ToString();
li.Value = row["Departid"].ToString();
DDLDepart.Items.Add(li);
//递归调用addOtherDll函数,在函数中把deep加1
AddOtherDll(strPading, Convert.ToInt32(row["PKID"]), datatable, deep + 1);//递归添加子节点
}
}