跪求一类似58同城或者百姓网的分类代码

华丽丽的小低调 2011-10-22 11:05:54
我现在想做一个商品分类的网站。
分类类似58同城,比如按类别分,按尺寸分,按颜色分,按价格分,这样。
我知道如果只按其中一种方式分类,出数据绑定数据控件很简单。关键是有这么多分类,该如何实现?

求高手指教。
我商品表主要字段有 类别字段(l_id)尺寸字段(size_id)颜色字段(color_id)价格字段(price_id)
对应 类别表(l_id,l_name) 如:1,皮革类
尺寸表(size_id,size_name)如:1,0-10cm
颜色表(color_id,color_name)如:1,红色
价格表(price_id,price_name)如:1,0-10元

在分类处,就是显示下面这些表的name字段

当用户点击一个皮革类,下面的数据控件就绑定,如:sql语句(select * from sp where l_id=1)
当用户又点击一个0-10cm后,下面的数据控件绑定,如:sql (select * from sp where l_id=1 and size_id=1)

我用datalist绑定查询出的数据。
问题就是,这样条件叠加,该怎么传值?
我用a.aspx?l_id=" +Eval("l_id")这样只能传一个值,而且我无法判断用户选择了几个条件。

该怎么解决呢?求高手指教,不胜感谢!
...全文
665 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
huayy 2011-11-02
  • 打赏
  • 举报
回复
后台代码太多,很多注释涉及隐私,不方便贴。
huayy 2011-11-02
  • 打赏
  • 举报
回复
把我的代码贴出来吧,希望你能看懂。

<!--筛选条件开始-->

<asp:Panel runat="server" ID="Shaixuan_Panel" Width="100%">


<div style="clear:both;border-bottom-width: 1px;border-bottom-style: dashed;border-bottom-color: #cecece; line-height:24px;">
<div style="width:130px; text-align:right; float:left;">
<font style="font-weight:bold; color:Black;">品牌:</font>
<asp:hyperlink ID="Brand1" runat="server" rel="nofollow"></asp:hyperlink>
</div>
<div style="width:644px; float:left; padding-left:10px;">
<ul class="new_li" style="white-space:nowrap;">
<asp:Repeater ID="Sx_Brandlist" runat="server" EnableViewState="false">
<ItemTemplate>
<li style="float:left; margin-left:10px;"><asp:hyperlink runat="server" NavigateUrl='<%# request("uid") & "-" & DataBinder.Eval(Container, "DataItem.A_Class") & "-" & request("order") & "-1-" & request("a1") & "-" & request("a2") & "-" & request("a3") & "-" & request("a4") & "-" & request("a5") & "-" & request("size") & "-c3.html" %>' Text='<%# CodeBrand(Trim(DataBinder.Eval(Container, "DataItem.A_Class")) & "_" & Trim(DataBinder.Eval(Container, "DataItem.A_Title_Cn"))) %>' style="color:Black;"></asp:hyperlink></li>
</ItemTemplate>
</asp:Repeater>
</ul>
</div>
</div>


<asp:Repeater ID="a_list_1" runat="server" EnableViewState="false">
<ItemTemplate>

<div style="clear:both;border-bottom-width: 1px;border-bottom-style: dashed;border-bottom-color: #cecece; line-height:24px;">
<div style="width:130px; text-align:right; float:left;">
<asp:Label ID="title" runat="server" Text='<%# "<b>" & Trim(DataBinder.Eval(Container, "DataItem.A_Title")) & ":</b>" %>' style="color:Black;"></asp:Label>
<asp:Label ID="a_class" runat="server" Text='<%# Trim(DataBinder.Eval(Container, "DataItem.a_class")) %>' Visible="false"></asp:Label>
<asp:Label ID="a_order" runat="server" Text='<%# Trim(DataBinder.Eval(Container, "DataItem.a_order")) %>' Visible="false"></asp:Label>
<asp:hyperlink runat="server" NavigateUrl='<%# codeAll(DataBinder.Eval(Container, "DataItem.a_order")) %>' Text='<%# codeAll_Title(DataBinder.Eval(Container, "DataItem.a_order")) %>' style="color:Black;" rel="nofollow"></asp:hyperlink>
</div>

<asp:Repeater ID="a_list_2" runat="server" EnableViewState="false">
<ItemTemplate>
<div style="float:left; margin-left:20px;">
<asp:hyperlink runat="server" Text='<%# codeT(Trim(DataBinder.Eval(Container, "DataItem.A_Title")) & "_" & Trim(DataBinder.Eval(Container, "DataItem.A_Class_2")) & "_" & Trim(DataBinder.Eval(Container, "DataItem.A_Weizhi"))) %>' NavigateUrl='<%# request("uid") & "-" & request("brand") & "-" & request("order") & "-1-" & code1(Trim(DataBinder.Eval(Container, "DataItem.A_Weizhi")) & "_" & Trim(DataBinder.Eval(Container, "DataItem.A_Class_2"))) & "-" & code2(Trim(DataBinder.Eval(Container, "DataItem.A_Weizhi")) & "_" & Trim(DataBinder.Eval(Container, "DataItem.A_Class_2"))) & "-" & code3(Trim(DataBinder.Eval(Container, "DataItem.A_Weizhi")) & "_" & Trim(DataBinder.Eval(Container, "DataItem.A_Class_2"))) & "-" & code4(Trim(DataBinder.Eval(Container, "DataItem.A_Weizhi")) & "_" & Trim(DataBinder.Eval(Container, "DataItem.A_Class_2"))) & "-" & code5(Trim(DataBinder.Eval(Container, "DataItem.A_Weizhi")) & "_" & Trim(DataBinder.Eval(Container, "DataItem.A_Class_2"))) & "-" & request("size") & "-c3.html" %>' title='<%# Trim(DataBinder.Eval(Container, "DataItem.A_Title_2")) %>' style="color:Black;"></asp:hyperlink>
</div>
</ItemTemplate>
</asp:Repeater>

</div>

</ItemTemplate>
</asp:Repeater>



</asp:Panel>

<!--筛选条件结束-->
huayy 2011-11-02
  • 打赏
  • 举报
回复
你在模板列中也可以放 request("c1") 这样的参数的,可以得到用户当前的点击。
  • 打赏
  • 举报
回复
看我11楼,我想达到这个效果啊
  • 打赏
  • 举报
回复
因为我看58同城他们的网站,当用户点击一个类别后,它传递的就是一个参数,当用户又点击一个类别后,连接在之前参数的基础上又加了一个新的参数,实在不知道他们是怎么实现的。。。哎。。。纠结啊。。。
  • 打赏
  • 举报
回复
这个问题看来是没人能帮上忙了
huayy 2011-10-26
  • 打赏
  • 举报
回复
楼主为何不仔细看5楼给的答案,我做过的。
可以解决你2楼的疑问
zell419 2011-10-26
  • 打赏
  • 举报
回复
XXX.aspx?size_id=123&price_id=124&color_id=231
这样应该是多条件了 。
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 zell419 的回复:]
引用 8 楼 happybebe 的回复:

因为我看58同城他们的网站,当用户点击一个类别后,它传递的就是一个参数,当用户又点击一个类别后,连接在之前参数的基础上又加了一个新的参数,实在不知道他们是怎么实现的。。。哎。。。纠结啊。。。

没发现能这样 。
如果color_id,color_name就是这样的一个表 我觉得还不如直接存颜色名字 。
这有什么意义 。
[/Quote]

品表这只是一个例子,因为分类方法有很多种,当然,颜色直接放到商品表也是可以的,但是还有很多分类,像尺寸,价格段,等。。这些都要各建一张表存放。
我目前是这样的。
商品表a(id,size_id,price_id,color_id)
1 1 11 111
2 1 12 112
尺寸表b(size_id,size_name)
1 0-10cm
2 10-20cm
价格表c(price_id,price_name)
11 10-20元
12 20-30元
颜色表d(color_id,color_name)
111 红色
112 蓝色
大家一看就知道,下面的三张表与商品表相对应。
前台有三个datalist分别绑定下面的三张表用来分类。
每个datalist里面有个HyperLink,用来传递参数,所以每个datalist里面的HyperLink只能获取并传递绑定表的(XXX_id)字段。

用户可能只点了一个分类,这就是只传一个参数,XXX.aspx?size_id=123
但是用户又点了一个分类后,链接应该就是XXX.aspx?size_id=123&price_id=124
同样的,又点一个传递的参数XXX.aspx?size_id=123&price_id=124&color_id=231
但是,我们没法控制用户点了什么,无法将参数传递,哎。。。。。纠结啊!!!
zell419 2011-10-26
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 happybebe 的回复:]

因为我看58同城他们的网站,当用户点击一个类别后,它传递的就是一个参数,当用户又点击一个类别后,连接在之前参数的基础上又加了一个新的参数,实在不知道他们是怎么实现的。。。哎。。。纠结啊。。。
[/Quote]
没发现能这样 。
如果color_id,color_name就是这样的一个表 我觉得还不如直接存颜色名字 。
这有什么意义 。
ASPNETCHENGXU 2011-10-26
  • 打赏
  • 举报
回复
是不是这样实现的我只是猜测啊:在前台放一个隐藏控件,然后点击每一个分类是用js获取相应值,重新组成连接,然后在本页显示生成的链接,并把生成的链接字符串放入隐藏控件中,等下次点击冲洗获取重新组成新连接
erictang2003 2011-10-23
  • 打赏
  • 举报
回复
给你一个思路,在DataList 的 ItemDataBound 事件中,捕获 e.Item.DataItem , 再捕获此行的链接,修改既可
huayy 2011-10-23
  • 打赏
  • 举报
回复
<asp:HyperLink ID="ename2" runat="server" Font-Size="12px" Height="16"
NavigateUrl='<%# "introduce.aspx?l_id=" +Eval("l_id") %>'
Text='<%# getldyl(DataBinder.Eval(Container.DataItem,"l_name")) %>' ForeColor="green"></asp:HyperLink>


你可以改成这样的模板列
<asp:HyperLink runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.A_Title")) %>' NavigateUrl='<%# "a.aspx?rid=" & DataBinder.Eval(Container, "DataItem.cs1") & "&id=" & DataBinder.Eval(Container, "DataItem.cs2") %>' Target="_blank"></asp:HyperLink>

  • 打赏
  • 举报
回复
求高手指点迷津啊!!!!!!!!!!!!!
  • 打赏
  • 举报
回复
求高手指点迷津啊!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wknight_it 的回复:]

商品表主要字段有 类别字段(l_id)尺寸字段(size_id)颜色字段(color_id)价格字段(price_id)



既然你有这个表了,那么你搜索条件里面,每个条件都用其id不就行了

比如:Show.aspx?id=1&i=1&s=1&c=1&p=1

这样就表示,商品编号为1、尺寸编号为1、颜色编号为1和价格编号为1的商品

检索……
[/Quote]

对,我也是这样想的,但是问题就是出在怎么传递参数上,不知道怎么传啊?
我用datalist控件绑定分类的表,在前台链接获取这个表的每个项目的id,所以前台datalist里面有个
<asp:HyperLink ID="ename2" runat="server" Font-Size="12px" Height="16"
NavigateUrl='<%# "introduce.aspx?l_id=" +Eval("l_id") %>'
Text='<%# getldyl(DataBinder.Eval(Container.DataItem,"l_name")) %>' ForeColor="green"></asp:HyperLink>
这就是一个datalist分类(按照l_id分类的)在参数传递上,只能获取该表中的l_id的值,其他的像p_id,price_id根本获取不到....
求解决方法!!!!
风骑士之怒 2011-10-23
  • 打赏
  • 举报
回复
商品表主要字段有 类别字段(l_id)尺寸字段(size_id)颜色字段(color_id)价格字段(price_id)



既然你有这个表了,那么你搜索条件里面,每个条件都用其id不就行了

比如:Show.aspx?id=1&i=1&s=1&c=1&p=1

这样就表示,商品编号为1、尺寸编号为1、颜色编号为1和价格编号为1的商品

检索的时候,只需要查询一个表就好了

而你这个搜索条件列出来的时候
只需要去查询这多个表,并显示其数据就好了

至于当点击一个条件之后,如何点击另一个条件,而保持当前条件存在,那只要分析URL,并处理下参数就可以了。

62,046

社区成员

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

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

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

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