zoukankan      html  css  js  c++  java
  • ASP.NET2.0 TreeView的数据库绑定

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_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>
    <style type="text/css">
    <!--
    body,td,th 
    {
        font-family
    : 宋体;
        font-size
    : 9pt;
    }
    body 
    {
        margin-left
    : 0px;
        margin-top
    : 0px;
        margin-right
    : 0px;
        margin-bottom
    : 0px;
    }
    -->
    </style>
    </head>
    <body>
        
    <form id="form1" runat="server">
        
    <div>
        
    <asp:TreeView ID="TreeView1" runat="server" Width="100%" />
      
    </div>
        
    </form>
    </body>
    </html>

    using System;
    using System.Data;
    using System.Configuration;
    using System.Collections;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;
    using System.Data.SqlClient;

    public partial class _Default : System.Web.UI.Page
    {
        
    protected void Page_Load(object sender, EventArgs e)
        {
            
    if (!IsPostBack)
            {
                TreeViewBind();
            }
        }
        主从表绑定
    #region 主从表绑定
        
    private void TreeViewBind()
        {
            DataSet dst 
    = GetTreeViewData();
            
    foreach (DataRow masterRow in dst.Tables["sProBigName"].Rows)
            {
                TreeNode masterNode 
    = new TreeNode((string)masterRow["sProBigName"]);
                TreeView1.Nodes.Add(masterNode);
                
    foreach (DataRow childRow in masterRow.GetChildRows("child"))
                {
                    TreeNode childNode 
    = new TreeNode((string)childRow["sProSmallSortName"]);
                    masterNode.Expanded 
    = false;
                    masterNode.ChildNodes.Add(childNode);
                }
            }
        }

        
    private DataSet GetTreeViewData()
        {
            SqlConnection Conn 
    = new SqlConnection(System.Configuration.ConfigurationManager.AppSettings["ConnectionSqlServer"].ToString());
            SqlDataAdapter BigSort 
    = new SqlDataAdapter("select * from [Yp_ProBigSort]", Conn);
            SqlDataAdapter SmallSort 
    = new SqlDataAdapter("select * from [Yp_ProSmallSort]", Conn);
            DataSet ds 
    = new DataSet();
            BigSort.Fill(ds, 
    "sProBigName");
            SmallSort.Fill(ds, 
    "sProSmallSortName");
            ds.Relations.Add(
    "child", ds.Tables["sProBigName"].Columns["iProBigSort_ID"], ds.Tables["sProSmallSortName"].Columns["iProBigSortID"]);
            
    return ds;       
        }
        
    #endregion
    }



    Yp_ProBigSort表
    数据结构:
    iProBigSort_ID(父表主键)
    sProBigName(根节点名称)

    iProBigSort_ID      sProBigName
    1                             普通内科
    2                             普通外科
    3                             妇产科

    Yp_ProSmallSort表
    iProSmallSort_ID(子表主键)
    iProBigSortID(父表主键)
    sProSmallSortName(子节点名称)

    iProSmallSort_ID       iProBigSortID       sProSmallSortName
    1                                       1                                感冒
    2                                       1                                发烧
    3                                       2                                普通外科1
    4                                       2                                普通外科2
    5                                       3                                妇产科1
    6                                       3                                妇产科2





    -----------------------------------------------

    TreeView的数据绑定资源默认的有两类:XML和SiteMap 

    这两类资源的共同特点就是资源文件是固定保存在项目中的,这一类方便我们使用来做菜单,所以TreeView归类在导航控件中.这里的绑定我不做详细的叙述,VS2005中可以很方便的使用.

    TreeView还有一种用法是用来显示数据信息及其数据信息的层级信息,这里上面的两类就不能满足我们的需要,我们需要的是与数据库资源连接,而形成动态的TreeView.同样我们还可以在数据库中使用树的双亲表示法把树描述出来,例如

    ID Name ParentID
    1 1 0
    2 2 0
    3 3 0
    4 4 1
    5 5 1
    6 6 2
    7 7 2
    8 8 3
    9 9 7

    使用这种的数据库方法可以很方便的绑定到TreeView中,形成一个无限动态树.(当然还有其他的数据库的方法)

    private void InitTree(TreeNodeCollection Nds, string ParentId)
        
    {
            DataView dvroles 
    = new DataView();
            TreeNode tmpNd;
            
            
    string strRID;
            dvroles.Table 
    = csa.CreateDataSet("DS1").Tables["T1"];//DataSet的DataTable表中
            dvroles.RowFilter = " ParentID=" + ParentId;
            
    foreach (DataRowView drvrole in dvroles)
            
    {
                strRID 
    = drvrole["ID"].ToString();
                tmpNd 
    = new TreeNode();
                tmpNd.Value 
    = drvrole["ID"].ToString();
                tmpNd.Text 
    = drvrole["Name"].ToString();
                tmpNd.Target 
    = drvrole["ParenID"].ToString();
                Nds.Add(tmpNd);
                InitRoleTree(tmpNd.ChildNodes, strRID);
            }

        }

    在这里我们可以进行控制的树的信息有

    Value 节点的ID
    Text 节点的显示信息
    Target 关联网页内容的目标窗口,如果没有关联网页,也可以做一个数据容器
    ToolTip 节点文本提示工具
    ImageUrl 节点图片
    ImageToolTip 节点图片文本提示工具


  • 相关阅读:
    【LeetCode】在排序数组中查找元素的第一个和最后一个位置
    【LeetCode】搜索旋转排序数组
    【LeetCode】组合总和
    【LeetCode】电话号码的字母组合
    【LeetCode】对称二叉树
    【LeetCode】验证二叉搜索树
    【LeetCode】分发糖果
    Go学习笔记
    mybatis
    redis
  • 原文地址:https://www.cnblogs.com/wdx2008/p/792509.html
Copyright © 2011-2022 走看看