我正在做一個如此小的網頁,其中包含4個主要的HTML div,它應包含來自SQL數據庫的最後4條NEWS。將數據從SQL Server綁定到標籤
所以我設計了它們,並將它們放在標籤控件和Image控件上。
並將信息從SQL綁定到它們,我使用了(DataView)對象,並使用從0到3的循環我已經獲取了我需要的數據。
但我相信這種方式不是完美的!所以我需要更清晰和有效的東西!
我正在做一個如此小的網頁,其中包含4個主要的HTML div,它應包含來自SQL數據庫的最後4條NEWS。將數據從SQL Server綁定到標籤
所以我設計了它們,並將它們放在標籤控件和Image控件上。
並將信息從SQL綁定到它們,我使用了(DataView)對象,並使用從0到3的循環我已經獲取了我需要的數據。
但我相信這種方式不是完美的!所以我需要更清晰和有效的東西!
創建頁面上的<asp:repeater ... />
控制,並將其綁定到你的SQL數據源。
在數據源中創建適當的Select語句(或使用LINQ或任何你喜歡的)。
佈局Repeater控件像這樣
<asp:Repeater ID="Repeater1" runat="server" DataSourceID="MyDataSource">
<HeaderTemplate>
<div style="height: 30px;">
Header info
</div>
</HeaderTemplate>
<ItemTemplate>
<div>
<%# Eval("SomeInfo")%>
<img src='<%# Eval("SomeImage")%>' title='<%# Eval("SomeImageTitle")%>' alt='<%# Eval("SomeImageAlt")%>' />
</div>
</ItemTemplate>
<SeparatorTemplate>
<hr />
</SeparatorTemplate>
<FooterTemplate>
<div style="height: 25px;">
Footer Stuff
</div>
</FooterTemplate>
</asp:Repeater>
@ RPM1984提到了LinqDataSource,他可能是對的。你應該使用LinqDataSource而不是SqlDataSource。 – 2010-07-07 04:38:26
謝謝,效果很好!但我沒有Linq技能。 但我會完全得到他們.. 再次感謝..... – 2010-07-07 22:31:42
請不要忘記標記答案 – 2010-07-07 22:52:14
您可以使用LINQ檢索數據。
爲了舉例說明:
var latestNews = (from n in db.News orderby n.Date descending select n).Take(4).ToList();
label1.Text = latestNews[0].Content;
label2.Text = latestNews[1].Content;
label3.Text = latestNews[2].Content;
label4.Text = latestNews[3].Content;
這只是對他當前解決方案的重新描述 – 2010-07-07 04:27:38
編輯完成後,您仍然錯過了這一點。如果他想突然選擇前10名新聞報道呢?他需要再添加6行代碼。數據的限制最好在其職責所在 - 在DAL或數據庫本身中完成。 UI應該是一個簡單的綁定操作。 – RPM1984 2010-07-07 05:11:04
我只是用一個簡單的例子來解決他所問的問題...... :)我同意你關於分離問題的觀點,但提問者的問題是關於這樣一個小的網頁。我認爲這裏沒有涉及DAL /圖層。 – 2010-07-07 05:30:06
假設你的數據視圖只包含你想顯示的4個項目,你可能想利用的DataRepeater風格ASP.NET控件之一。
您綁定數據視圖的數據源控件屬性,並調用.DataBind()的頁面或控制(頁呼叫結束所有控件遞歸)
DataRepeater中內則是一種「模板」控制,其內容可能會像
<div style="st1"><%# Eval("NewsText") %> <img src='<%# Eval("ImgSrc") %>' /></div>
你爲什麼要回答「約翰」的問題?用戶是Hashem ;-) – 2010-07-07 04:35:13
所以它是。我把這個問題的評論作者誤解爲問題的作者。對不起哈森姆。 – 2010-07-07 04:45:04
謝謝親愛的回答:) 並沒有關於誤讀的問題:D 知識就是目的吧? – 2010-07-07 22:34:34
不知道你用的是什麼版本的.NET,因此可能會影響這個答案,但是......
LinqDataSource將是一個不錯的方法正如你可以說的那樣如果數據級過濾(即, TOP 3),而不是頁面級過濾(在內存循環中)。
謝謝親愛的,我正在使用ASP.NET 4.0 我會製作一些Linq技巧並應用它們...... :) – 2010-07-07 22:32:29
產品名稱是「SQL Server」,而不是「MS SQL」,您應該使用sql-server標籤,而不是「sql」標籤。 「sql」只意味着某種形式的SQL:T-SQL,PL/SQL等。 – 2010-07-07 04:33:29