查询字符串不在HeaderTemplate中发送值

时间:2015-04-17 17:02:36

标签: asp.net

我在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不要试图运行它。它不会。

1 个答案:

答案 0 :(得分:0)

HeaderTemplate对于所有元素都很常见,并且只针对DataList控件呈现一次,它对数据源来说并不紧张,所以我担心你的代码没有意义。

如果您需要HeaderTemplate的内容与项目数据相关,那么您需要将其放在ItemTemplate