zoukankan      html  css  js  c++  java
  • C#树型select菜单



    using System;
    using System.Data;
    using System.Text;

    using BTCMS.IDAL;
    using BTCMS.Utility;
    using BTCMS.DALFactory;
    namespace BTCMS.BLL
    {
        
    /// <summary>
        
    /// 业务逻辑类Sort 的摘要说明。
        
    /// </summary>
        public class Sort
        {
            
    private static readonly ISort dal = DataAccess.CreateSort();

            
    public DataTable GetStortTree()
            {
                
    //创建返回的表
                DataTable dtTree = new DataTable();
                dtTree.Columns.Add(
    "SID"typeof(int));
                dtTree.Columns.Add(
    "SortStr"typeof(string));
                DataRow drDefalut 
    = dtTree.NewRow();
                drDefalut[
    "SID"= 0;
                drDefalut[
    "SortStr"= "---根栏目---";
                dtTree.Rows.Add(drDefalut);
                
    //获取栏目表
                DataTable dtAll= dal.GetAllList("SID,NameCN,FatherID,ChildsCount,Route");
                
    int rowAllCount = dtAll.Rows.Count;
                
    if(rowAllCount == 0)
                {
                    
    return dtTree;
                }
                
    //将栏目放如数组
                string[,] a = new string[rowAllCount,4];
                
    for(int i=0;i<rowAllCount;i++)
                {
                    DataRow dr
    =dtAll.Rows[i];
                    a[i,
    0]=dr["SID"].ToString();
                    a[i,
    1]=dr["FatherID"].ToString();
                    a[i,
    2]=dr["NameCN"].ToString();
                    a[i,
    3]=dr["ChildsCount"].ToString();
                }
                
    //获取根栏目数量,进入第一次循环
                DataTable dtRoot = dal.GetRootList("SID");
                dtTree 
    = GetChildsTree(a,dtTree,0,0,dtRoot.Rows.Count);

                
    return dtTree;
            }
            
    //GetStortTree子函数用于递归
            private DataTable GetChildsTree(string[,] ar, DataTable dtTree, int fatherid,int depth,int childCount)
            {
                
    int added = 0;
                
    for(int i=0;i<ar.Length/4;i++)
                {
                    
    if(Convert.ToInt32(ar[i,1]) == fatherid)
                    {
                        added 
    += 1;
                        
    string strcur = " ";

                        
    if(fatherid !=0)
                        {
                            
    if (depth!=1)
                            {
                                strcur 
    = strcur+"";
                            }

                            
    if(childCount == added)
                                strcur 
    = strcur+"";
                            
    else
                                strcur 
    = strcur+"";
                        }

                        DataRow dr 
    = dtTree.NewRow();
                        dr[
    "SID"= ar[i,0];
                        
    if(fatherid == 0)
                            dr[
    "SortStr"= strcur+""+ar[i,2]+"";
                        
    else
                            dr[
    "SortStr"= strcur+ar[i,2];
                        dtTree.Rows.Add(dr);
                        
    if(Convert.ToInt32(ar[i,3])>0)
                        {
                            dtTree
    =GetChildsTree(ar,dtTree,Convert.ToInt32(ar[i,0]),depth+1,Convert.ToInt32(ar[i,3]));
                        }
                    }
                }
                
                
    return dtTree;
            }
       }
    }

    这里把记录放到数组里递归的,有点脱了裤子放屁的味道,DATATABLE不直接就是在内存里的了么.空了修改下.

    最后是返回DATATABEL直接绑定到list控件上就可以了.之所以返回datatable是因为如果我要绑定到表格的话只要便利一次datatable替换下字符串就可以了.

    数据库的这几个字段是必须的。FatherID上级栏目的ID,OrderID排序的编号,ChildCount子栏目数量。

    效果http://www.blueidea.com/bbs/NewsDetail.asp?lp=2&id=2548181

  • 相关阅读:
    C语言的特点与缺点
    C语言的特点与缺点
    HDU1234 开门人和关门人
    HDU1234 开门人和关门人
    B00014 C++实现的AC自动机
    B00014 C++实现的AC自动机
    HDU4716 A Computer Graphics Problem
    HDU4716 A Computer Graphics Problem
    I00029 C语言程序-打印九九乘法表
    I00029 C语言程序-打印九九乘法表
  • 原文地址:https://www.cnblogs.com/zkxp/p/383687.html
Copyright © 2011-2022 走看看