日期:2014-05-18  浏览次数:20470 次

|M| TreeView 对数据要怎么进行绑定
如我有数据
班级学生表
班级       学生编号
一班         070101
一班         070102
二班         070201

学生表
学生编号     学生姓名
070101         张三
070102         李四
070201         王五
------------------------
然后现在要绑定到TreeView的最终样式为

一班
          张三
          李四
二班
          王五

我要怎么来进行绑定最好

谢谢


------解决方案--------------------
先绑定第一层

然后在绑定第一层的函数里面绑定第二层
------解决方案--------------------
帮顶
------解决方案--------------------
private bool isHaveCheckBox = false;
private bool isExpanded = false;
private DataTable dtTree = null;

protected void Page_Load(object sender, EventArgs e)
{

if (!IsPostBack)
{

TreeView1.Nodes.Add(getRootAreaTreeNode(false, false));
}

}

#region TreeViewBind
/// <summary>
/// 获取包含全部子节点的根节点数据
/// </summary>
/// <param name= "haveCheckBox "> 节点是否产生CheckBox </param>
/// <param name= "expanded "> 节点是否展开 </param>
/// <returns> </returns>
public Microsoft.Web.UI.WebControls.TreeNode getRootAreaTreeNode(bool haveCheckBox, bool expanded)
{

string rootID = "班级 ";
string rootName = "班级 ";
isHaveCheckBox = haveCheckBox;
isExpanded = expanded;

#region populate root node
Microsoft.Web.UI.WebControls.TreeNode rootNode = new Microsoft.Web.UI.WebControls.TreeNode();
rootNode.Text = rootName;
rootNode.ID = rootID;

rootNode.Expanded = true;
rootNode.CheckBox = isHaveCheckBox;
#endregion
//假设表 banji 和 xuesheng 数据操作部分用来sqlhelper楼主可 自行改成自己的
DataSet dsTree = SqlHelper.ExecuteDataset(connstring, CommandType.Text, "select 班级 as code, 班级 as sName, '班级 ' as parentCode from banji
union select banji.学生编号 as code, 学生姓名 as sName, 班级 as parentCode from xuesheng inner join banji on banji.学生编号 = xuesheng.学生编号 ");
dtTree = dsTree.Tables[0];


this.populateAreaTree(rootID, rootNode);

return rootNode;
}

private void populateAreaTree(string parentID, Microsoft.Web.UI.WebControls.TreeNode pNode)
{

DataRow[] dRows = dtTree.Select( "parentCode= ' " + parentID + " ' ");

if (dRows.Length > 0)
{
Microsoft.Web.UI.WebControls.TreeNode Node = null;
foreach (DataRow drow in dRows)
{
Node = new Microsoft.Web.UI.WebControls.TreeNode();
Node.Text = drow[ "SortName "].ToString();
Node.ID = drow[ "SortID "].ToString();

Node.Expanded = isExpanded;
pNode.Nodes.Add(Node);
populateAreaTree(Node.ID, Node); //递归
}
}
}
#endregion
------解决方案--------------------
顶 先把整个表读出来放到DataTable里再进行筛选
------解决方案--------------------
写两个函数,找出父子关系,迭代一下,还是简单的
------解决方案--------------------