京东商城的 组合筛选

zhuxiaobo_net 2011-02-28 02:53:45
就是像京东商城的组合筛选是如何做的,也就是他的超链接地址的参数,每点一个不同的类目,其它的类目地址的参数也会对应的变化,这个功能如何做啊。。。

我知道是伪静态,也无需数据库的设计之类

我只想知道,它的组合搜索 连接地址参数的变化 是如何实现的。。。

本人于到这个问题。。。应该是get提交,然后后台获取。。。

但是 具体代码如何实现,我脑壳痛。。。

各位可否给点思路?
...全文
571 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
DevilBaby_01 2012-11-13
  • 打赏
  • 举报
回复
引用 13 楼 qingYun1029 的回复:
XML/HTML code? 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 <asp:Panel ……
Hashtable ha = GetParames(); 是什么意思???
eric4421 2011-07-30
  • 打赏
  • 举报
回复
好贴 我也整准备做这个
zhuxiaobo_net 2011-07-19
  • 打赏
  • 举报
回复
非常感谢大家的参与,这个我自己已经实现了。。。特别是qingYun1029 可谓有图有真相 呵呵

准备结贴
qingYun1029 2011-05-28
  • 打赏
  • 举报
回复
后台代码如下:
页面加载事件:

protected void Page_Load(object sender, EventArgs e)
{
//#region 加载事件
if (!IsPostBack)
{
try
{
#region 为筛选条件栏赋初始值
if (Session["order"] == null)
{
//Response.Redirect("SelectRoute.aspx");
}
else
{
DataSet ds = CreateDataSource();//获取所有类型的数据源
rpCarType.DataSource = ds.Tables["type"];
rpCarBrand.DataSource = ds.Tables["brand"];
rpCarStruct.DataSource = ds.Tables["struct"];
rpCarPrice.DataSource = ds.Tables["price"];
rpTransType.DataSource = ds.Tables["transType"];

//绑定所有车辆类型
rpCarType.DataBind();
rpCarBrand.DataBind();
rpCarStruct.DataBind();
rpCarPrice.DataBind();
rpTransType.DataBind();

if (rpCarType.Items.Count > 0)
{
(rpCarType.Items[0].FindControl("l1") as LinkButton).CssClass = "red";
}

if (rpCarBrand.Items.Count > 0)
{
(rpCarBrand.Items[0].FindControl("l1") as LinkButton).CssClass = "red";
}

if (rpCarStruct.Items.Count > 0)
{
(rpCarStruct.Items[0].FindControl("l1") as LinkButton).CssClass = "red";
}

if (rpCarPrice.Items.Count > 0)
{
(rpCarPrice.Items[0].FindControl("l1") as LinkButton).CssClass = "red";
}

if (rpTransType.Items.Count > 0)
{
(rpTransType.Items[0].FindControl("l1") as LinkButton).CssClass = "red";
}
#endregion

string str = "";
Hashtable ha = GetParames();
foreach (string s in ha.Keys)
{
string temp = s + ":" + ha[s] + " ";
str += temp;
}
//前台分页时需要用到的查询条件(前台分页时通过ajax实现的)
Page.ClientScript.RegisterStartupScript(this.GetType(), "", "<script>window.parent.tiaojian='" + str + "';</script>");
}
}
catch (Exception ex)
{

}
}
}


LinkButton单击事件:

#region 条件筛选栏每个条件的单击事件
/// <summary>
/// 条件筛选栏每个条件的单击事件
/// </summary>
/// <param name="o"></param>
/// <param name="e"></param>
protected void com(object o, CommandEventArgs e)
{
string commandName = e.CommandName;
try
{
if (commandName == "com1")
{
//清楚所有LinkButton控件的CssClass属性。
for (int i = 0; i < rpCarType.Items.Count; i++)
{
LinkButton l = rpCarType.Items[i].FindControl("l1") as LinkButton;
l.CssClass = "";
}
//为类型为LinkButton的事件源添加CssClass属性。
(o as LinkButton).CssClass = "red";
}
else if (commandName == "com2")
{
for (int i = 0; i < rpCarBrand.Items.Count; i++)
{
LinkButton l = rpCarBrand.Items[i].FindControl("l1") as LinkButton;
l.CssClass = "";
}
(o as LinkButton).CssClass = "red";
}
else if (commandName == "com3")
{
for (int i = 0; i < rpCarStruct.Items.Count; i++)
{
LinkButton l = rpCarStruct.Items[i].FindControl("l1") as LinkButton;
l.CssClass = "";
}
(o as LinkButton).CssClass = "red";
}
else if (commandName == "com4")
{
for (int i = 0; i < rpCarPrice.Items.Count; i++)
{
LinkButton l = rpCarPrice.Items[i].FindControl("l1") as LinkButton;
l.CssClass = "";
}
(o as LinkButton).CssClass = "red";
}
else if (commandName == "com5")
{
for (int i = 0; i < rpTransType.Items.Count; i++)
{
LinkButton l = rpTransType.Items[i].FindControl("l1") as LinkButton;
l.CssClass = "";
}
(o as LinkButton).CssClass = "red";
}
}
catch (Exception ex)
{
throw new Exception(ex.ToString());
}

string str = "";
Hashtable ha = GetParames();
foreach (string s in ha.Keys)
{
string temp = s + ":" + ha[s] + " ";
str += temp;
}
Page.ClientScript.RegisterStartupScript(this.GetType(), "", "<script>window.parent.tiaojian='" + str + "';</script>");
}
#endregion
qingYun1029 2011-05-28
  • 打赏
  • 举报
回复

<asp:Panel ID="panMain" runat="server">
<table width="100%" class="select-text2 select-tab8">
<tr>
<td align="right" width="110px"><span class="wh"><strong>车型:</strong></span></td>
<td>
<div class="divrp">
<asp:Repeater runat="server" ID="rpCarType">
<ItemTemplate>
<asp:LinkButton runat="server" ID="l1" Text='<%# Eval("carType") %>' CommandName="com1" OnCommand="com" CommandArgument='<%# Eval("carType") %>'></asp:LinkButton>
</ItemTemplate>
</asp:Repeater>
</div>
</td>
</tr>
<tr>
<td align="right"><span class="wh"><strong>品牌:</strong></span></td>
<td>
<div class="divrp">
<asp:Repeater runat="server" ID="rpCarBrand">
<ItemTemplate>
<asp:LinkButton runat="server" ID="l1" Text='<%# Eval("carBrand") %>' CommandName="com2" OnCommand="com" CommandArgument='<%# Eval("carBrand") %>'></asp:LinkButton>
</ItemTemplate>
</asp:Repeater>
</div>
</td>
</tr>
<tr>
<td align="right"><span class="wh"><strong>厢数:</strong></span></td>
<td>
<div class="divrp">
<asp:Repeater runat="server" ID="rpCarStruct">
<ItemTemplate>
<asp:LinkButton runat="server" ID="l1" Text='<%# Eval("carStruct") %>' CommandName="com3" OnCommand="com" CommandArgument='<%# Eval("carStruct") %>'></asp:LinkButton>
</ItemTemplate>
</asp:Repeater>
</div>
</td>
</tr>
<tr>
<td align="right"><span class="wh"><strong>价格区间:</strong></span></td>
<td>
<div class="divrp">
<asp:Repeater runat="server" ID="rpCarPrice">
<ItemTemplate>
<asp:LinkButton runat="server" ID="l1" Text='<%# Eval("carPrice") %>' CommandName="com4" OnCommand="com" CommandArgument='<%# Eval("carPrice") %>'></asp:LinkButton>
</ItemTemplate>
</asp:Repeater>
</div>
</td>
</tr>
<tr>
<td align="right"><span class="wh"><strong>排挡类型:</strong></span></td>
<td>
<div class="divrp">
<asp:Repeater runat="server" ID="rpTransType">
<ItemTemplate>
<asp:LinkButton runat="server" ID="l1" Text='<%# Eval("carTransType") %>' CommandName="com5" OnCommand="com" CommandArgument='<%# Eval("carTransType") %>'></asp:LinkButton>
</ItemTemplate>
</asp:Repeater>
</div>
</td>
</tr>

</table>
</asp:Panel>


说一下思路:前台是通过Repeater数据控件实现的,每一个大类都对应一个Repeater控件,然后循环大类下面的小类(LinkButton)

加载的时候将所有的车辆类型都绑定好数据,并且通过后台设置样式(个人觉得这个功能比较重要,所以不放到后台),最后拼接SQL语句查询并显示查询结果。

然后单击详细类型时,通过LinkButton的后台单击事件响应的改变查询条件即可。。
qingYun1029 2011-05-28
  • 打赏
  • 举报
回复
是这个样子的吗??

说一个我自己做的。。

岁月的云 2011-05-28
  • 打赏
  • 举报
回复
那个javascript怎么写
ycproc 2011-03-03
  • 打赏
  • 举报
回复
伪静态 。。。 有什么不行的http://hi.csdn.net/space-3276198.html

我这个京东的 你去问他
无缺 2011-03-03
  • 打赏
  • 举报
回复
根据条件拼接数据库SQl语句就可以的
wuyq11 2011-02-28
  • 打赏
  • 举报
回复
http://topic.csdn.net/u/20110111/09/DA743E45-57AD-4DED-B953-B4A82D8B3C10.html
http://topic.csdn.net/u/20100727/19/1ea19900-8a7f-45f0-ad3e-e1710a25165c.html
wulg10 2011-02-28
  • 打赏
  • 举报
回复
我也做过,但是我是通过js来拼接参数然后跳转本页面。这个方法比价笨。
等高手回答
bestdowt1314 2011-02-28
  • 打赏
  • 举报
回复
用的UrlRewriter来做的伪静态,我做过的电子商务网站也是这样做的。每两个-之间就是一个参数,只是这里为了SEO而做了优化。想知道什么意思如那个之间是分类ID,品牌ID其实你多研究一下就能搞懂的。
harvesthouhao 2011-02-28
  • 打赏
  • 举报
回复
恩。应该是做了UrlRewriter!具体参数应该是这里“1672-2615-1452-0-0-0-0-0-0-0-1-1-1”。但具体都是什么意思。那需要研究一下了。前三个。应该是该商品所属大类、子类的ID。最后3个,应该有page的参数
jianshao810 2011-02-28
  • 打赏
  • 举报
回复
代表什么就要问 他们的开发人员了吧。
http://www.360buy.com/products/1672-2615-1452-0-0-0-0-0-0-0-1-1-1.html
这个是有规律的吧。
是url重写
zhuxiaobo_net 2011-02-28
  • 打赏
  • 举报
回复
感谢您的回答。。
您说的是查询部分,我要的是页面那些动态地址如何生成。。。。
ycproc 2011-02-28
  • 打赏
  • 举报
回复
根据条件拼接SQL

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧