限制asp.repeater仅绑定前两行

时间:2014-01-15 06:59:54

标签: c# asp.net sql

我希望在同一数据源中显示我的网页上的精选表格中的前三个产品,这些数据源从SQL中提取所有行,然后所有行都可以在另一个asp.net转发器中找到。我怎么能限制

ASP.net

<asp:Repeater ID="FeaturedProduct" runat="server">
                              <ItemTemplate>
                                  <tr>
<td><%# Eval("ProductName")%></td>
<td><%# Eval("Price")%></td>
</tr>
                              </ItemTemplate>
                          </asp:Repeater>

SQL数据源

 <asp:SqlDataSource DataSourceMode="DataSet" ID="ProductPics" runat="server" ConnectionString="<%$ ConnectionStrings:PIConnectionString1 %>" 
    SelectCommand="Select ProductName, Price from Products where ProdImageId = @ProdId">
    <SelectParameters>                     
    <asp:RouteParameter Name="ProdId" DbType="Int32" RouteKey="ProdId" />
    </SelectParameters>
    </asp:SqlDataSource >

C#

FeaturedProduct.DataSourceID = "PriceComparison";

更新 我完成了前3行的限制数据,但是现在eval bind无法正常工作。那么如何将数据与html中的元素绑定。

var mycollection = ProductPics.SelectCommand;
FeaturedProduct.DataSource = mycollection.Take(3);
FeaturedProduct.DataBind();

3 个答案:

答案 0 :(得分:0)

假设ProdImageId是您表中的主要约束,请将以下sql查询作为select命令: -

SelectCommand="Select top 3 ProductName, Price from Products where ProdImageId = @ProdId order by ProdImageId desc"

答案 1 :(得分:0)

ROW_NUMBER - 子句中添加WHERE - 参数,并使用其他参数使用三个或所有记录调用数据源。 使用DataSource对象的事件来根据需要操作参数。

答案 2 :(得分:0)

DataSource-property SelectCommand是一个String,包含您的SQL-Select语句。 Take是一个String-Extension,返回String的前三个字符。

换句话说,您的代码不会查询数据库,也不会返回一组记录。