1.数据库结构
要包含主子关系(ParentID做为本级的上一级,id做为本级的标识)表的结构有待完善,这只是最差的表现形式,下面的A001等是树状结构之下的订单号码。
2.前台代码
为li标签添加单击事件。
//点击获取部门ID
function GetClickValue() {
$(".strTree li div").click(function () {
var id = "";
//子目录
$(this).parent().find("span").each(function () {
if ($(this).html() != "") {
id += "'" + $(this).html() + "',";
}
});
id = id.substr(0, id.length - 1);
var path = 'List.aspx?id=' + id; //传递参数
window.parent.frames["target_right"].location = path;
Loading(true);
})
}
</script>
<ul class="strTree"> <%-对应上面的 $(".strTree li div")-%>
<%=strHtml.ToString()%> <%-前后台传递的参数-%>
</ul>
3.后台代码(截取代码段不能直接运行)
public StringBuilder strHtml = new StringBuilder(); //前后台进行传递的桉树
protected void Page_Load(object sender, EventArgs e)
{
if (!base.IsPostBack)
{
this.InitInfo(); //初始化
}
}
public void InitInfo()
{
DataTable dtOrg = this.user_idao.GetSuppPurchTreeList(); //自定义的接口函数,后面是查出来的DataTable的值。(只取两个月内的)
//SELECT * FROM t_supp_PurchTree where CreateDate between dateadd(MONTH,-2,GETDATE()) and getdate() ORDER BY id ASC
if (DataTableHelper.IsExistRows(dtOrg))
{
foreach (DataRowView drv in new DataView(dtOrg) //过滤条件,RowFilter。
{
RowFilter = "ParentId = '0'"
})
{
this.strHtml.Append("<li>");
this.strHtml.Append("<div>" + drv["TreeName"].ToString());
this.strHtml.Append("<span style='display:none'>" + drv["id"].ToString() + "</span></div>");//传递参数值可以修改
this.strHtml.Append(this.GetTreeNode(drv["id"].ToString(), dtOrg)); //绑定父项中的子项
this.strHtml.Append("</li>");
}
}
else
{
this.strHtml.Append("<li>");
this.strHtml.Append("<div><span style='color:red;'>暂无数据</span></div>");
this.strHtml.Append("</li>");
}
}
public string GetTreeNode(string parentID, DataTable dtNode)
{
StringBuilder sb_TreeNode = new StringBuilder();
DataView dv = new DataView(dtNode);
dv.RowFilter = "ParentId = '" + parentID + "'";
if (dv.Count > 0)
{
sb_TreeNode.Append("<ul>");
foreach (DataRowView drv in dv)
{
sb_TreeNode.Append("<li>");
sb_TreeNode.Append("<div>" + drv["TreeName"]);
sb_TreeNode.Append("<span style='display:none'>" + drv["id"].ToString() + "</span></div>");//传递参数值可以修改
sb_TreeNode.Append(this.GetTreeNode(drv["id"].ToString(), dtNode));
sb_TreeNode.Append("</li>");
}
sb_TreeNode.Append("</ul>");
}
return sb_TreeNode.ToString();
}
4.接受参数页后台获取数值
this.ID = base.Request["id"];
然后对数据库的查询语句附加条件。例如,"select * from plan where id in (" + this.ID + ")"
然后重新进行绑定进行数据的显示。