.net簡單演算法實現無限級分類(二)

來源:互聯網
上載者:User
    上文我們提到了如何用treeview讀取和表示表中無限級分類的資料.
  2)添加新節點,首先選擇父節點,範例代碼如下:
     
      

 //得到父節點的typeid
            int typeid = Convert.ToInt32(Request["pid"]);
            //得到父節點的所有欄位的值
            SqlDataReader dr = man.gettypeaMess(typeid);
            while (dr.Read())
            {

                pid = Convert.ToInt32(dr["TypeId"].ToString());
                name = typename.Text;
                man.addtype(pid, name);
                spth = dr["spath"].ToString();
                child = dr["childrenID"].ToString();
                man.update(spth);
                man.upechildid(pid, child);


            }

其中man.gettypeaMess(typeid)方法是我定義的根據父節點typeID得到父節點所有欄位的值包括SPATH,CHILDRENID等.update()和upechildid()方法分別是根據父節點SPATH和CHILDRENID得到新節點的SPATH和父節點要增加一個child的id,然後更新對應的資料庫代碼如下:/**//// <summary>
    /// 更新路徑
    /// </summary>
    /// <param name="spath"></param>
    public void update(string spath)
    { 
      int type=dbExecuteSql4Value("select top 1 typeid from QType order by typeid desc");
       string path=spath+","+Convert.ToString(type);
       dbExecuteSql("update QType set spath='" + path + "' where TypeId=" + type);

   }

/**//// <summary>
    /// 更新父類childid
    /// </summary>
    /// <param name="typeid"></param>
    /// <returns></returns>
    public void upechildid(int typeid,string child)
    {
        string childid;
        int type = dbExecuteSql4Value("select top 1 typeid from QType order by typeid desc");
        if (child.Length==0)
        {childid= Convert.ToString(type);}
        else{
        childid = child + "," + Convert.ToString(type);}
        dbExecuteSql("update QType set childrenID='" + childid + "' where TypeId=" + typeid);

    
    }

3)刪除節點
    做到刪除 節點我們需要的是將它的子節點一併刪除,看似很難實現,但我們有了spath實現時就十分簡單了首先當然得得到所要刪除節點的typeid,然後代碼如下:  public void deletetype(string typeid)
    {
        int tid = Convert.ToInt32(typeid);
        dbExecuteSql("delete from QType where CHARINDEX(',"+tid+",',spath)>0");
        dbExecuteSql("delete from QType where TypeId=" + tid);
    }

在這裡最重要的就是CHARINDEX了,不明白就去查查吧,我這就不詳述了.
其他的操作就變的十分簡單了,有的與上面的大同小異,這個演算法不是很難,但是基本上可以實現無限級分類的要求.

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.