我有一个主页,我希望它显示数据库中的新闻项目。我已经配置它,以便它有一行和列。
示例:
Column1 Column2 Column3
Latest News Item 2nd latest news item 3rd latest news item
当我的页面加载时,它不会从数据库中检索任何信息。我也没有它,所以检索最新的,第二次或第三次,我仍然可以尝试配置它。
我有两个问题, 1.如何将一个项目检索到一个列中2.如何编写最新的新项目。
我的aspx页面配置如下:
<div class="row">
<div class="col-md-4">
<h2><%# Eval("Title") %>
<small><%# Eval("NewsContent") %></small>
</h2>
</div>
<div class="col-md-4">
<h2><%# Eval("Title") %>
<small><%# Eval("NewsContent") %></small>
</h2>
</div>
<div class="col-md-4">
<h2><%# Eval("Title") %>
<small><%# Eval("NewsContent") %></small>
</h2>
</div>
</div>
我的aspx.cs页面配置如下:
protected void Page_Load(object sender, EventArgs e)
{
GetNewsList();
}
private DataTable GetNewsList()
{
DataTable dataTable = new DataTable();
SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["AppConnectionString"].ConnectionString);
string query = "SELECT [Id], [Title], [DatePosted], [NewsContent] FROM [News] ORDER BY [Id] DESC";
connection.Open();
SqlCommand command = new SqlCommand(query, connection);
dataTable.Load(command.ExecuteReader());
connection.Close();
return dataTable;
}
我的数据库表配置如下:
CREATE TABLE [dbo].[News] (
[Id] INT IDENTITY (1, 1) NOT NULL,
[Title] NVARCHAR (100) NOT NULL,
[DatePosted] DATE NOT NULL,
[NewsContent] NTEXT NOT NULL,
[IsRead] BIT DEFAULT ((0)) NULL,
PRIMARY KEY CLUSTERED ([Id] ASC)[![enter image description here][1]][1]
);
有什么想法吗?
答案 0 :(得分:1)
检索DataTable的方法看起来不正确。下面的代码将填充数据表,并使用using
,处置对象并关闭连接。
DataTable dt = new DataTable();
using (SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["AppConnectionString"].ConnectionString))
using (SqlDataAdapter adapter = new SqlDataAdapter(query, connection))
{
try
{
adapter.Fill(dt);
}
catch (Exception ex)
{
//handle error
}
}
在你的情况下,这将是
using (SqlDataAdapter adapter = new SqlDataAdapter("SELECT [Id], [Title], [DatePosted], [NewsContent] FROM [News] ORDER BY [Id] DESC", connection))
更新
您是否将DataTable绑定到这样的Repeater(或其他控件)?
<div class="row">
<asp:Repeater ID="Repeater1" runat="server">
<ItemTemplate>
<div class="col-md-4">
<h2><%# Eval("Title") %>
<small><%# Eval("NewsContent") %></small>
</h2>
</div>
<div class="col-md-4">
<h2><%# Eval("Title") %>
<small><%# Eval("NewsContent") %></small>
</h2>
</div>
<div class="col-md-4">
<h2><%# Eval("Title") %>
<small><%# Eval("NewsContent") %></small>
</h2>
</div>
</ItemTemplate>
</asp:Repeater>
</div>
背后的代码
Repeater1.DataSource = dt;
//or
Repeater1.DataSource = GetNewsList();
Repeater1.DataBind();