zoukankan      html  css  js  c++  java
  • 递归实现dropdownlist树型结构的栏目实例

    看到网上有很多DrowDownList的树形结构绑定,偶也看到一个稍微改了下,就是自动计算属于第几层的代码

    数据库目录为MenuID,MName,fID

    原地址为:http://www.5icoding.com/n36.aspx

    数据库结构:

    效果图:

    代码
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Text;
    using System.Data;
    using System.Configuration;
    using System.Data.SqlClient;

    public partial class TreeDropDownList : System.Web.UI.Page
    {
        
    protected void Page_Load(object sender, EventArgs e)
        
    {
            
    if (!Page.IsPostBack)
            
    {
                DataTable table;
                
    string con = ConfigurationManager.AppSettings["TreeConnectionString"].ToString();
                SqlConnection conn 
    = new SqlConnection(con);
                SqlDataAdapter sda 
    = new SqlDataAdapter("select * from Menu", conn);
                table 
    = new DataTable();
                sda.Fill(table);


                BindToChannelList(table, 
    0,0);   
            }

        }


           
    /// <summary>   
             
    /// 递归绑定数据到ddlChannelList控件上,形成树状结构   
             
    /// </summary>   
             
    /// <param name="dt">数据源</param>   
             
    /// <param name="categoryid">栏目id</param>   

            private void BindToChannelList(DataTable dt, int categoryid, int layer)   
             
    {   
       
                  
    //DataView dv = dt.DefaultView;使用这句在asp.net 1.1中会出现"在位置 1 处没有任何行。"的错误,感谢阿耀同学的帮助.   
       
                  DataView dv
    =new DataView(dt);   
                    
                 dv.RowFilter 
    = " fID= " + categoryid.ToString(); //过滤   

                 
    if (categoryid != 0)
                 
    {
                     layer
    ++//默认为第一层 ,以前有实例是数据库一列保存层的数据,这里是自动计算,默认为0
                 }

                 
    foreach (DataRowView drv in dv)   
                 
    {   
                       
                       
    string span = "";
                     
    if (categoryid != 0)
                     
    {

                         
    for (int i = 0; i < layer; i++)//如果i=0,显示的时候第一级菜单就少了个空格
                         {
                             span 
    +=" ";
                         }

                         span 
    += "";//添加前面的空格   
                     }



                     ListItem li 
    = new ListItem();
                     li.Text 
    = span + drv["MName"].ToString();
                     li.Value 
    = drv["MenuID"].ToString();   
                     
    this.ddlChannelList.Items.Add(li);
                     BindToChannelList(dt,Convert.ToInt32(drv[
    "MenuID"]), layer);   
                 }
       
             }

            
    protected void ddlChannelList_SelectedIndexChanged(object sender, EventArgs e)
            
    {
                Response.Write(
    "值为:"+this.ddlChannelList.SelectedValue+"--文本内容  为"+this.ddlChannelList.SelectedItem.Text.Trim());
            }

    }
  • 相关阅读:
    bootstrap经典总结
    C#操作CAD-读取和修改数据
    C#操作CAD-调用winform
    C#操作CAD-初始化、引用dll
    oracle查询时间
    ArcGIS API for JavaScript开发环境搭建及第一个实例demo
    mysql命令大全
    第一次配置mysql5.6
    ExcelHelper
    excel常用函数
  • 原文地址:https://www.cnblogs.com/Hdsome/p/1613725.html
Copyright © 2011-2022 走看看