ASP.NET之電子商務系統開發-4(二級分類)


一、前言

繼上次的訂單,這是第四篇。記錄一下分類和篩選。這功能是最后做的,因為我完全不懂其原理。后來通過同學的指導(一位很有天賦的同學,比我牛逼一個層次,同樣是高三。:D),終於也是完成了。在寫這篇博客之前還有點半懂不懂,經過些許時間的思考,終於全懂了,可以將其寫下來。

二、開始

1.先看一下表設計

image這是一級類別表,因為是電子商務系統,所以就暫時7個類別。

然后二級類別:

imageGS_ID跟Sort_ID是一樣的。

最后商品信息表里面需要這樣:

image

兩個ID分別對應Sort1和Sort2.

2.前台

前台的話,正是用了URL傳值,不知道淘寶天貓用的是哪種傳值。那么先來看一下自己做的效果:

(1):正常打開一個頁面image

此時后台該是直接加載:

public void dataload()
        {
            SqlDataSource4.SelectCommand = "select * ,(CASE WHEN datalength(Goods_name) <= 12 THEN Goods_name ELSE SUBSTRING(Goods_name, 1, 12) + '...' END) AS Goods_name1  FROM GoodsInfo " + ((Request.QueryString["Ord"] != null) ? "order by " + Request.QueryString["Ord"].ToString() : "");     
        }

顯示出來所有商品。

(2):點擊一級類別中的任意一個,出現:image。當然底下商品也隨之變動了,他的前台用了一個URL:

<a href="NewGoods.aspx?SID1=<%#Eval("Sort_ID")%>" class="sortboxtext"><%#Eval("Sort_name")%></a>

后台加載時加入條件:

public void dataloadgoods()
        {
            SqlDataSource4.SelectCommand = "select * ,(CASE WHEN datalength(Goods_name) <= 12 THEN Goods_name ELSE SUBSTRING(Goods_name, 1, 12) + '...' END) AS Goods_name1  FROM GoodsInfo  where GS_id ='" + Request.QueryString["SID1"] + "'" + ((Request.QueryString["Ord"] != null) ? "order by " + Request.QueryString["Ord"].ToString() : "");
        }

可以看到from GoodsInfo  where 后面的條件:GS_id = (此處就是前台傳過來的URL了)。

(3)點擊一級類別后,再點擊二級類別,出現:image。底下商品隨之變動。

前台:

<a href="NewGoods.aspx?SID1=<%#Eval("GS_ID")%>&SID2=<%#Eval("Sort2_ID")%>" class="sortboxtext2"><%#Eval("Sort_name")%></a>

后台:

public void dataloadgoods2()
        {
            SqlDataSource4.SelectCommand = "select * ,(CASE WHEN datalength(Goods_name) <= 12 THEN Goods_name ELSE SUBSTRING(Goods_name, 1, 12) + '...' END) AS Goods_name1  FROM GoodsInfo  where GS_id ='" + Request.QueryString["SID1"] + "' and GS2 = '" + Request.QueryString["SID2"] + "'" + ((Request.QueryString["Ord"] != null) ? "order by " + Request.QueryString["Ord"].ToString() : "");
        }
可以看到,在SID1的基礎上,加了一個條件,用and連接,在后面寫GS2 = (此處就是前台傳過來的二級類別的URL)。 后面的獲取Ord是一個判斷。

(4)此頁面中還有一個排序,也就是篩選,當你點擊“價格”或是”最新發布”時,出現:image。可以看到在SID2后面有一個&,&后面還有一個條件

前台:

<a href="NewGoods.aspx?<%=((Request.QueryString["SID1"] !=null)?"SID1="+Request.QueryString["SID1"].ToString():"") %>&<%=((Request.QueryString["SID2"] !=null)?"SID2="+Request.QueryString["SID2"].ToString():"") %>&Ord=In_store_price" class="seqencingtext">價格</a>

用了三目運算符,如果不為空,就將SID1、SID2以及Ord傳到后台,Ord是自己定義的一個URL名稱。Ord=(此處的名稱,應該跟你數據庫中字段對應)

后台跟上面的二級類別一樣,只不過上面前台沒有Ord,后台的Ord就是空了。這個前台多了一個Ord,后台獲取也就多了一個:

public void dataloadgoods2()
        {
            SqlDataSource4.SelectCommand = "select * ,(CASE WHEN datalength(Goods_name) <= 12 THEN Goods_name ELSE SUBSTRING(Goods_name, 1, 12) + '...' END) AS Goods_name1  FROM GoodsInfo  where GS_id ='" + Request.QueryString["SID1"] + "' and GS2 = '" + Request.QueryString["SID2"] + "'" + ((Request.QueryString["Ord"] != null) ? "order by " + Request.QueryString["Ord"].ToString() : "");
        }

可以看到,最后Ord不為空,那么就order by Ord了。

(5)最后一種情況:

image

這個只需要在前台的Radlistview中加入:

<telerik:RadListView ID="RadListView3" runat="server" AllowPaging="True" ItemPlaceholderID="item" PageSize="15" DataSourceID="SqlDataSource4">
                          <EmptyDataTemplate>
                                    <div class="tiptext">暫無此商品!</div>
                                </EmptyDataTemplate>

就可以了。

以上,就是二級分類的基本內容了,不知道天貓淘寶是怎么實現的。每個瀏覽器可傳的URL長度不同,不過在這個項目里,還達不到2000多字符那種長度,不知道其他人是怎么弄的,希望懂的大神教教我。另外這URL的安全性也是問題,不知道怎么弄,也希望會的教一下。謝謝大家支持!

ps:記錄到這,整個項目就基本差不多結束了,可能是最后一篇了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM