前台
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="Admin_manageProduct_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:TreeView ID="TreeView1" runat="server" ShowLines="True"
onselectednodechanged="TreeView1_SelectedNodeChanged">
</asp:TreeView>
<asp:Button ID="Button1" runat="server" Text="Button" οnclick="Button1_Click" />
</div>
</form>
</body>
</html>
后台
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
public partial class Admin_manageProduct_Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
bindTree();
}
else
{
Response.Write("选择节点触发回发了");
}
}
private void bindTree()
{
MainCode mainCode = new MainCode();
DataTable dt = mainCode.GetProductType();//得到需要的datatable
this.FillNode(dt, null);
}
private void FillNode(DataTable dt, TreeNode node)
{
DataView dv = new DataView(dt);
if (node == null) //根结点
{
dv.RowFilter = "PT_ParentID='0'"; //筛选到根结点的所有子节点
}
else //不是根结点
{
dv.RowFilter = "PT_ParentID='" + node.Value + "'"; //筛选对应节点的所有子节点
}
foreach (DataRowView drv in dv) //遍历填充节点的所有子节点,如果传入的节点node为叶子节点,遍历要退出,不再进行递归
{
TreeNode no = new TreeNode(drv["PT_Name"].ToString(), drv["PT_ID"].ToString());
FillNode(dt, no); //填充no节点的子节点
if (node == null)
{
this.TreeView1.Nodes.Add(no);
}
else
{
node.ChildNodes.Add(no);
}
}
}
protected void Button1_Click(object sender, EventArgs e)
{
Response.Write("选择的文本是" + TreeView1.SelectedNode.Text);
Response.Write("选择的类型是" + TreeView1.SelectedValue);
}
protected void TreeView1_SelectedNodeChanged(object sender, EventArgs e)
{
TreeView1.SelectedNodeStyle.BackColor = System.Drawing.Color.Red;
}
}
关于获取数据,大家可以自己写一个ID NAME PID的分类表 获取了就可以了。
希望本文所述对大家的C#程序设计有所帮助。