ASP.NET之电子商务系统开发-4(二级分类)
一、前言
继上次的订单,这是第四篇。记录一下分类和筛选。这功能是最后做的,因为我完全不懂其原理。后来通过同学的指导(一位很有天赋的同学,比我牛逼一个层次,同样是高三。: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:记录到这,整个项目就基本差不多结束了,可能是最后一篇了。
ASP.NET之电子商务系统开发-4(二级分类)的更多相关文章
- ASP.NET之电子商务系统开发-1(数据列表)
一.前言 首先声明的是,这是我第一个与别人合作的.net项目,另一个人做的是后台管理,我做的前台,这是一个电子商务的系统,主要实现的功能是查看商品以及购物功能. 二.开始 首先看一下我截取的项目部分商 ...
- ASP.NET之电子商务系统开发-3(订单)
一.前言 继上次的购物车,这是第三篇.记录一下订单功能.这功能做的时候,走过弯路,很是烧脑,因为思路没理顺,数据库设计的也不怎么好,做到一半才发现有问题,接着把数据库重新设计好,理清思路后,终于完成了 ...
- ASP.NET之电子商务系统开发-2(购物车功能)
一.前言 继上次的首页数据列表后,这是第二篇.记录一下购物车这个比较庞大的功能,可能实现的方法跟其他人有点不一样,不过原理都差不多,是将cookie存数据库里面的. 二.开始 首先看一下购物车流程及对 ...
- 解析ASP.NET WebForm和Mvc开发的区别 分类: ASP.NET 2013-12-29 01:59 11738人阅读 评论(5) 收藏
因为以前主要是做WebFrom开发,对MVC开发并没有太深入的了解.自从来到创新工场的新团队后,用的技术都是自己以前没有接触过的,比如:MVC 和EF还有就是WCF,压力一直很大.在很多问题都是不清楚 ...
- 基于Mvc3,Ef,领域驱动电子商务系统的EShop开发
分享自己从代码小工一步步走向搭架子,ING... 简单了解UnitOfWork 摘要: UnitOfWorkUnit Of Work模式,即工作单元,它是一种数据访问模式.它是用来维护一个由已经被业务 ...
- 转:国内外著名开源b2c电子商务系统比较包括asp.net和php
from: http://longdick.iteye.com/blog/1122879 国内外著名开源b2c电子商务系统比较包括asp.net和php 博客分类: 电子商务 国内外著名开源b2c ...
- 如何在ASP.NET大型应用系统的模块化开发实现多版本程序集并存支持[转载]
如何在ASP.NET大型应用系统的模块化开发实现多版本程序集并存支持 这是我最近碰到的一个问题,有一家企业.NET程序员有80多人,产品线很多也很复杂.对于这样的产品,他们采用了模块化开发来实现复用与 ...
- 基于jeesite+android开发 电子商务系统免费教程
下载地址: jeesite免费教程 基于jeesite+android开发 电子商务系统免费教程 基于jeesite+android开发 电子商务系统免费教程 这个教程已经录制完很久了,一直没有公开, ...
- ecshop二次开发 使用ecshop电子商务系统的100个小问题
自己从事B4C电子商务开发一段时间了,特别对ecshop深有体会,刚接触的时候不容易理解,下面将根据自己的经验,来总结100条关于操作ecshop电子商务系统的小问题. 1:如何修改网站"欢 ...
随机推荐
- maintenance ShellScripts
1.Linux挂载Winodws共享文件夹 2.查看http的并发请求数及其TCP连接状态: 3.用tcpdump嗅探80端口的访问看看谁最高 4.统计/var/log/下文件个数 5.查看当前系统每 ...
- spoj 7258 Lexicographical Substring Search (后缀自动机)
spoj 7258 Lexicographical Substring Search (后缀自动机) 题意:给出一个字符串,长度为90000.询问q次,每次回答一个k,求字典序第k小的子串. 解题思路 ...
- python setattr(),getattr()函数
setattr(object,name,value): 作用:设置object的名称为name(type:string)的属性的属性值为value,属性name可以是已存在属性也可以是新属性. get ...
- strtus2.3 java.lang.NoSuchFieldException: DEFAULT_PARAM>
strtus2.3.15.1 的bug请下载 http://download.csdn.net/detail/livalue/6229373 或加群到群共享中下载.214579879
- EF Dal通用类
一个通用的ef dal处理类是非擦汗那个提高工作效率的 using System; using System.Collections.Generic; using System.Data.Enti ...
- (function(){}())写法的用途
全局命名空间污染与 IIFE 总是将代码包裹成一个 IIFE(Immediately-Invoked Function Expression),用以创建独立隔绝的定义域.这一举措可防止全局命名空间被污 ...
- IOS--当字符串返回的数据格式为xml/html时
今天一来办公室就接到客户返回的BUG,其中一个是因为后台返回的字符串中的数据为xml/html格式. 后来经过百度,发现了两种解决方法,第一种是使用webView,webView中专门为了这种情况准 ...
- MFC解决View中添加控件闪烁
一.简介 我们经常会在我们的View类中添加各种类型的控件,列表控件就是最常用的了.但是我们发现添加控件的时候会,在窗口变化的时候会导致各种各样的闪烁,让我们烦恼异常.所以我对此找到新的解决方案. 二 ...
- 兼容现有jQuery API的轻量级JavaScript库:Zepo
Zepo是一个JavaScript框架,其特点是兼容现有jQuery API的同时,自身体积十分小:它与jQuery有着类似的API.如果你会jQuery,那么也就会使用Zepto了. $('div' ...
- B实习面试
1. 多态和继承关系,继承的几种实现机制? 实现多态,有二种方式,覆盖,重载. 覆盖,是指子类重新定义父类的虚函数的做法. 重载,是指允许存在多个同名函数,而这些函数的参数表不同(或许参数个数不同,或 ...