dynamictreeview.aspx

来自「bbbbbbbbbb bbbbbbbbbb gbbbbbbbbbbbbbbbbb」· ASPX 代码 · 共 87 行

ASPX
87
字号
<%@ Page Language="C#" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %>
<%@ Import Namespace="System.Configuration" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Dynamic Population of the TreeView Control</title>
    <script runat=server>        
        
        void Node_Populate(object sender, System.Web.UI.WebControls.TreeNodeEventArgs e)
        {
            if(e.Node.ChildNodes.Count == 0)
            {            
                switch( e.Node.Depth )
                {  
                    case 0:                
                        FillAuthors(e.Node);    
                        break;            
                    case 1:
                        FillTitlesForAuthors(e.Node);
                        break;        
                }    
            }            
        }

        void FillAuthors(TreeNode node)
        {
            string connString = System.Configuration.ConfigurationSettings.ConnectionStrings["NorthwindConnnection"].ConnectionString;
            SqlConnection connection = new SqlConnection(connString);            
            SqlCommand command = new SqlCommand("Select * From authors",connection);            
            SqlDataAdapter adapter = new SqlDataAdapter(command);
            DataSet authors = new DataSet();
            adapter.Fill(authors);            
            if (authors.Tables.Count > 0)
            {
                foreach (DataRow row in authors.Tables[0].Rows)
                {
                    TreeNode newNode = new TreeNode(row["au_fname"].ToString() + " " + row["au_lname"].ToString(), row["au_id"].ToString());
                    newNode.PopulateOnDemand = true;
                    newNode.SelectAction = TreeNodeSelectAction.Expand;
                    node.ChildNodes.Add(newNode);
                }
            }
        }

        void FillTitlesForAuthors(TreeNode node)
        {
            string authorID = node.Value;
            string connString = System.Configuration.ConfigurationSettings.ConnectionStrings["NorthwindConnnection"].ConnectionString;
            SqlConnection connection = new SqlConnection(connString);
            SqlCommand command = new SqlCommand("Select T.title, T.title_id From titles T" +
                    " Inner Join titleauthor TA on T.title_id = TA.title_id " + 
                    " Where TA.au_id = '" + authorID + "'", connection);
            SqlDataAdapter adapter = new SqlDataAdapter(command);
            DataSet titlesForAuthors = new DataSet();
            adapter.Fill(titlesForAuthors);
            if (titlesForAuthors.Tables.Count > 0)
            {
                foreach (DataRow row in titlesForAuthors.Tables[0].Rows)
                {
                    TreeNode newNode = new TreeNode(row["title"].ToString(), row["title_id"].ToString());
                    newNode.PopulateOnDemand = false;
                    newNode.SelectAction = TreeNodeSelectAction.None;
                    node.ChildNodes.Add(newNode);
                }
            }
        }


    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>    
        <asp:TreeView Runat="Server" ExpandImageUrl="Images/closed.gif" CollapseImageUrl="Images/open.gif" OnTreeNodePopulate="Node_Populate" ID="tvwauthors">
            <Nodes>
                <asp:TreeNode Text="Authors" PopulateOnDemand=true Value="0" />
            </Nodes>
        </asp:TreeView>
    </div>
    </form>
</body>
</html>

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?