将ID最新3项加载到主页

时间:2018-02-22 10:34:00

标签: asp.net

我有一个主页,我希望它显示数据库中的新闻项目。我已经配置它,以便它有一行和列。

示例:

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]
);

有什么想法吗?

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();