在vs2005中为了取一个Treeview的返回值到主页面而费了很大的劲也没有解决,无奈之下只好采用DropDownList中绑定Treeview,取出选定项的值。在此把源码发上来,供大家参考一下:
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
this.DDL_Depment.Items.Clear(); //注:如果不加此句则树目录会重复绑定一次
TreeView treeView = new TreeView();
bool isExpanded = false;
string sSelectedData = "";
BindCategoryTreeVew(treeView, isExpanded, sSelectedData);
}
}
///<summary>
/// Treeview绑定部门表
///</summary>
///<param name="tvDep">Treeview树</param>
///<retuns>dt返回一个DataTable表</retuns>
//创建根节点
public void BindCategoryTreeVew(TreeView treeView, bool isExpanded, string sSelectedData)
{
//将获取的数据转换为 一个DataTable
SqlDataAdapter da = new SqlDataAdapter("select Department_sid,DepartmentName,parent_department_SID,fullNumber,IsCompany from Tb_name", con);
DataTable dt = new DataTable();
da.Fill(dt);
//清空 树的所有节点
treeView.Nodes.Clear();
string fullNode = dt.Rows[0]["fullNumber"].ToString();
//获取与排序顺序中的筛选器以及指定的状态相匹配的所有System.Data.DataRow 数组
DataRow[] rowlist = dt.Select("IsCompany=1");
if (rowlist.Length <= 0) return;
foreach (DataRow dr in rowlist)
{
//创建根节点
TreeNode rootNode = new TreeNode();
//设置根节点的属性
rootNode.Text = dr["DepartmentName"].ToString();
//设置根节点的值
rootNode.Value = dr["Department_sid"].ToString();
rootNode.Expanded = isExpanded;
//获取或设置一个值,该值指示是否选中节点
rootNode.Selected = true;
//添加根节点
//treeView.Nodes.Add(rootNode);
this.DDL_Tree.Items.Add(new ListItem(rootNode.Text,rootNode.Value));
CreateChildNode(rootNode, dt, isExpanded, sSelectedData);
}
}
private void CreateChildNode(TreeNode parentNode, DataTable dt, bool isExpanded, string sSelecedData)
{
//选择数据,添加排序表达式
string ualue = parentNode.Value;
DataRow[] rowList = dt.Select("parent_department_SID='" + parentNode.Value.ToString() + "'");
foreach (DataRow row in rowList)
{
//创建一个新的节点了
TreeNode node = new TreeNode();
node.Text = row["DepartmentName"].ToString();
node.Value = row["Department_sid"].ToString();
node.Expanded = isExpanded;
if (node.Value == sSelecedData)
{
node.Selected = true;
}
//parentNode.ChildNodes.Add(node);
//子节点前加入两个空格
this.DDL_Tree.Items.Add(new ListItem(" "+node.Text, node.Value));
//递归调用,创建其他节点
CreateChildNode(node, dt, isExpanded, sSelecedData);
}
}