2014-01-15 16 views
0

我想顯示在我的網頁上的特色表中的前3名產品從同一個數據源,這是從SQL拉所有行,然後所有行可以在另一個asp.net中找到中繼器。如何限制限制asp.repater只綁定前兩行

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行的限制datasouce,但現在eval綁定不起作用。那麼我怎樣才能將數據綁定到html中的元素。

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

我們在談論哪個數據庫系統? – Alexander

+0

SQL Server 2008. Alex – Vicky

+0

So Alex,我想綁定兩個HTML表格與相同的數據源,並希望在摺疊上方的表格上顯示2-3條記錄作爲特色,並鏈接查看所有(這將指向另一個表所有行)低於網頁的摺疊。 – Vicky

回答

0

假設ProdImageId是你表中的主contraint,把下面的SQL查詢中選擇命令: -

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

阿肖克,我知道這件事。但是這會迫使我在同一頁面上添加2個sql命令。排名前3位,排第3位。因爲我在我的網頁中有兩個表格,並且想要將頂部2-3(如特色)和一個包含所有行的表格綁定在一起。 – Vicky

+0

你想同時綁定兩個表的數據源? –

+0

是的。我想將兩個表都綁定到相同的數據源,並希望在頁面頂部的表格上顯示2-3條記錄作爲精選和鏈接查看全部(這將指向另一個具有所有行的表) – Vicky

0

添加ROW_NUMBER -argument您WHERE -clause,並用另外的參數調用數據源包含三條或全部記錄。 根據需要使用DataSource對象的事件來操作參數。

+0

我們不能在後面的C#代碼中做,因爲我已經完成了綁定特色重複器中的前3條記錄(請參見更新問題),然後我可以將另一個重新綁定到主數據源。 – Vicky

+0

所以現在前3個記錄在MYCOLLECTION變量中。而我的問題是我如何填充HTML中的記錄,因爲eval現在不工作。 – Vicky

0

DataSource屬性SelectCommand是一個String,包含您的SQL-Select語句。 Take是一個字符串擴展,返回字符串的前三個字符。

換句話說,您的代碼不會查詢數據庫,也不會返回一組記錄。

+0

那麼爲了實現這個,需要對代碼進行哪些更改? – Vicky

+0

從我以前的答案。 – Alexander