我在datalist中使用Itemtemplate和headertemplate。但是在headertemplate的情况下,它不会将查询字符串值发送到其他页面
以下是brandwise.aspx
的datalist代码
<asp:DataList ID="DataList2" runat="server" DataSourceID="SqlDataSource2" >
<HeaderTemplate>
<a href='pc1.aspx?<%# Eval("categoryId","cid={0}") %>' style="text-decoration:none">
ALL BRANDS
</a>
</HeaderTemplate>
<ItemTemplate>
<ul>
<li>
<a href='brandwise.aspx?<%# Eval("categoryId","cid={0}") %>&<%# Eval("brandId","bid={0}") %>' style="text-decoration:none">
<%# Eval("brandName", "{0}") %>
</a>
</li>
</ul>
</ItemTemplate>
</asp:DataList>
<asp:SqlDataSource ID="SqlDataSource2" runat="server" ConnectionString="<%$ ConnectionStrings:DBCS %>" SelectCommand="select distinct b.brandName,p.categoryId,b.brandId from Brand1 b, Category c, Product1 p where b.brandId = p.brandId and p.categoryId = c.categoryId and p.categoryId = @cid;">
<SelectParameters>
<asp:QueryStringParameter DefaultValue="" Name="cid" QueryStringField="cid" />
</SelectParameters>
</asp:SqlDataSource>
问题在于以下标题模板
<HeaderTemplate>
<a href='pc1.aspx?<%# Eval("categoryId","cid={0}") %>' style="text-decoration:none">
ALL BRANDS
</a>
</HeaderTemplate>
因为当它在浏览器窗口中重定向到pc1.aspx时会显示
http://localhost:3492/pc1.aspx?
这意味着它不考虑查询字符串值,categoryId是列的名称。 我基本上是为我的项目建立一个电子商务网站。在这段代码中,我试图像亚马逊一样展示给定类别的品牌。例如,类别可能是“移动”,品牌可能是三星,苹果,诺基亚。因此,如果用户点击特定品牌,则仅显示该品牌的移动设备。我还需要点击一个“ALLBRANDS”选项,显示所有品牌。有什么我可以这样做的原因??? Plz不要试图运行它。它不会。
答案 0 :(得分:0)
HeaderTemplate
对于所有元素都很常见,并且只针对DataList
控件呈现一次,它对数据源来说并不紧张,所以我担心你的代码没有意义。
如果您需要HeaderTemplate
的内容与项目数据相关,那么您需要将其放在ItemTemplate