一、前言

继上次的订单,这是第四篇。记录一下分类和筛选。这功能是最后做的,因为我完全不懂其原理。后来通过同学的指导(一位很有天赋的同学,比我牛逼一个层次,同样是高三。:D),终于也是完成了。在写这篇博客之前还有点半懂不懂,经过些许时间的思考,终于全懂了,可以将其写下来。

二、开始

1.先看一下表设计

这是一级类别表,因为是电子商务系统,所以就暂时7个类别。

然后二级类别:

GS_ID跟Sort_ID是一样的。

最后商品信息表里面需要这样:

两个ID分别对应Sort1和Sort2.

2.前台

前台的话,正是用了URL传值,不知道淘宝天猫用的是哪种传值。那么先来看一下自己做的效果:

(1):正常打开一个页面

此时后台该是直接加载:

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):点击一级类别中的任意一个,出现:。当然底下商品也随之变动了,他的前台用了一个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)点击一级类别后,再点击二级类别,出现:。底下商品随之变动。

前台:

<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)此页面中还有一个排序,也就是筛选,当你点击“价格”或是”最新发布”时,出现:。可以看到在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)最后一种情况:

这个只需要在前台的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:记录到这,整个项目就基本差不多结束了,可能是最后一篇了。

最新文章

  1. CharacterEncodingFilter-Spring字符编码过滤器
  2. C# 完整List例子
  3. 关于全排列 next_permutation() 函数的用法
  4. linux 时间同步
  5. JqueryEasyUI浅谈本地化应用
  6. mount.nfs: access denied by server while mounting localhost:/home/xuwq/minilinux/system
  7. HTML 中的字符集、ASCII、 ISO-8859-1、符号之间的关系和 HTML URL 编码注意的事项
  8. A3992学习记录
  9. mysql 字符集设置查看
  10. Sqoop处理Clob与Blob字段
  11. 第四十四节,subprocess系统命令模块
  12. 用fluent模拟内循环床气化燃烧(调试过程记录)
  13. 二、nginx搭建图片服务器
  14. Python入门-数据类型之字符串
  15. 集合并发修改异常-foreach的时候不可修改值
  16. JavaScript判断不同平台
  17. 网络编程之套接字(udp)
  18. 把vim插入状态的光标改为竖线
  19. 《Linux内核设计与实现》 第一二章学习笔记
  20. java判断时间为上午,中午,下午,晚上,凌晨

热门文章

  1. mciSendString用法
  2. Redis的持久化选项
  3. HDU 1879 继续畅通工程 (Prim(普里姆算法)+Kruskal(克鲁斯卡尔))
  4. Hdu Binary Tree Traversals
  5. 如何查詢 SQL Server 資料庫中欄位值為 NULL 的資料(转)
  6. Spring中注入List,Set,Map,Properties的xml文件配置方法
  7. tomcat中开启的对SSL(https)的支持
  8. SlidingMenu侧边菜单
  9. su Authentication failure解决
  10. IOS--当字符串返回的数据格式为xml/html时