我正在做这么小的网页,其中包含4个主要的HTML div,它应该包含来自SQL数据库的最新4个新闻。
所以我设计了它们,并将它们放在标签控件和Image控件上。
并将SQL中的信息绑定到它们,我使用了(DataView)对象,并使用从0到3的循环,我得到了我需要的数据。
但我相信这种方式并不完美!所以我需要一些更清晰和有效的东西!
答案 0 :(得分:1)
在您的页面上创建<asp:repeater ... />
控件并将其绑定到您的SQL数据源
在数据源中创建适当的Select语句(或使用LINQ,或任何您喜欢的)。
布局转发器控件就像这样
<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>
答案 1 :(得分:1)
不知道您正在使用的.NET版本,因此可能会影响此答案,但是......
LinqDataSource将是一种很好的方法,因为您可以指定数据级过滤(即TOP 3),而不是页级过滤(在内存循环中)。
答案 2 :(得分:0)
假设您的数据视图仅包含您要显示的4个项目,您可能希望使用其中一个DataRepeater样式的ASP.NET控件。
将DataView绑定到控件Datasource属性,并为页面或控件调用.DataBind()(页面调用对所有控件都是递归的)
DataRepeater内部将是一个“模板”控件,其内容类似于
<div style="st1"><%# Eval("NewsText") %> <img src='<%# Eval("ImgSrc") %>' /></div>
答案 3 :(得分:-1)
您可以使用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;