我希望在同一数据源中显示我的网页上的精选表格中的前三个产品,这些数据源从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();
答案 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的前三个字符。
换句话说,您的代码不会查询数据库,也不会返回一组记录。