天天看點

使用者控件-TreeView的用法

Treeview中 ontreenodepopulate是一個很好的事件,當你點選樹的某個節點時調入資料庫展現此節點下的資料,并且無重新整理,當樹展現的資料多的時候就可以用此方法如MSDN的樹,但如果資料不多的時候沒有必要用此方法,因為要頻繁調資料庫

好閑話少說

由于是使用者控件是以把 treeview的部分屬性和事件公共,友善用此控件的頁面調用

頁面 TreeDept.ascx

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="TreeDept.ascx.cs" Inherits="UserControls_TreeDept" %>

<asp:TreeView ID="TreeView1" runat="server" ExpandDepth="1" ImageSet="Contacts"

    NodeIndent="10" onselectednodechanged="TreeView1_SelectedNodeChanged"

    ontreenodepopulate="TreeView1_TreeNodePopulate" Width="101px">

    <ParentNodeStyle Font-Bold="True" ForeColor="#5555DD" />

    <HoverNodeStyle Font-Underline="False" />

    <SelectedNodeStyle Font-Underline="True" HorizontalPadding="0px"

        VerticalPadding="0px" />

    <NodeStyle Font-Names="Verdana" Font-Size="8pt" ForeColor="Black"

        HorizontalPadding="5px" NodeSpacing="0px" VerticalPadding="0px" />

</asp:TreeView>

TreeDept.ascx.CS

public partial class UserControls_TreeDept : System.Web.UI.UserControl

{

    public event EventHandler DeptSel;

    public string DeptSelectNodeText

    {

        get { return TreeView1.SelectedNode.Text; }

    }

    SqlConnection con = new SqlConnection(@"server=LT-C9A4FDA64461;uid=sa;pwd=sa;database=ltweb");

    protected void Page_Load(object sender, EventArgs e)

    {

        if (!IsPostBack)

        {

            BindTree();

        }

    }

    void BindTree()

    {

        TreeNode tn = new TreeNode();

        tn.Text = "軟體";

        tn.Value = "1";

        tn.PopulateOnDemand = true;

        TreeView1.Nodes.Add(tn);

    }

    protected void TreeView1_TreeNodePopulate(object sender, TreeNodeEventArgs e)

    {

        SqlCommand cmd = new SqlCommand("select * from dept where parentID="+int.Parse(e.Node.Value),con);

        SqlDataAdapter sda = new SqlDataAdapter(cmd);

        DataTable dt = new DataTable();

        sda.Fill(dt);

        foreach (DataRow dr in dt.Rows)

        {

            TreeNode tn = new TreeNode(dr["Dept_Name"].ToString(), dr["Dept_ID"].ToString());

            tn.PopulateOnDemand = true;

            e.Node.ChildNodes.Add(tn);

        }

    }

    protected void TreeView1_SelectedNodeChanged(object sender, EventArgs e)

    {

        if(DeptSel!=null)

        DeptSel(this,EventArgs.Empty);

    }

}

調用頁面

 <form id="form1" runat="server">

    <div>

        <uc1:TreeDept ID="TreeDept1" runat="server" OnDeptSel="DeptSel_Change"/>

    </div>

    </form>

背景

public partial class Dept : System.Web.UI.Page

{

    protected void Page_Load(object sender, EventArgs e)

    {

    }

    protected void DeptSel_Change(object sender, EventArgs e)

    {

        Response.Write(TreeDept1.DeptSelectNodeText);

    }

}

轉載于:https://www.cnblogs.com/luca623/archive/2008/01/04/1025905.html