Martin(高超) 致 我
不好意思,前几天代码没有找到。现在给你贴出来。
数据表关键字段如下:
DepartmentID ParentDepartmentID
这是一个表现部门结构的表。不用多说就可以明白了,ParentDepartmentID是DepartmentID的父部门ID。是一种嵌套结构,准确来说是一个森林结构(树的数量不固定,子结点的数量不固定,属于很一般的树,没有规律性)。下面是代码示例:
//-------------------------必要参数----------------------------------
DataTable dataTable; //所有部门的数据源....如果数量巨大的话,就考虑到性能问题了
string departmentID = "0"; //初始化部门ID
int charCount = 0; //项目前的字符个数
char splitChar = '-'; //树状结构的分割符号
ListItem listItem; //放入下拉列表框的对象
//分级绑定部门
private void BindDepartments(string departmentID, int charCount)
{
StringBuilder builder = new StringBuilder();
DataView dataView = new DataView(dataTable); //获取检索数据源
dataView.RowFilter = "ParentDepartmentID="+departmentID; //筛选数据源
charCount += 2;
builder.Append(splitChar, charCount); //字符重复数量
for (int i = 0; i < dataView.Count;i++ )
{
listItem = new ListItem();
listItem.Text = builder.ToString() + dataView[i]["DepartmentName"].ToString();
listItem.Value = dataView[i]["DepartmentID"].ToString();
ddlDepartments.Items.Add(listItem);
BindDepartments(listItem.Value, charCount);
}
}
这里用的是递归,重点在于处理每个部门前面的字符个数,用的是简单的效果显示。如有兴趣可以再美化一般