0

我需要有关中继器控制和数据绑定的帮助。

我使用Repeater Control创建了一个显示来自数据库的文章(包含标题和帖子)的页面。

表结构为:

身份证标题帖子

aspx 代码是:

<ItemTemplate>
<%#Eval("title") %>
<asp:Label ID="lblSubject" runat="server" Text='<%#Eval("post") %>' Font-Bold="true"/>
</ItemTemplate>

<FooterTemplate>
</article>
</FooterTemplate>
</asp:Repeater>

C#代码是:

    string qw = "Select title, post from articles";
    RepDetails.DataSource = dbc.ConnectDataBaseReturnDS(qw);
    RepDetails.DataBind();

使用此代码我可以在页面中显示文章,但我想要的是当有人点击帖子的标题时,会打开一个包含该特定帖子的新页面。(与我们在普通网站/博客中看到的功能相同。)

我真的不知道该怎么做。我正在考虑使用查询字符串或其他东西,但没有任何想法。

请帮助我,我是 ASP.Net 的新手,如果我犯了任何错误,请原谅我,因为这是我第一次在这里发布线程。

4

1 回答 1

0

欢迎来到 StackOverflow!

将您的 ItemTemplate 更改为使用 ASP.NET 超链接,如下所示:

<ItemTemplate>
    <HyperLinkid="hlnkTitle" Text='<%#Eval("title") %>' NavigateUrl="Details.aspx?ID=<%#Eval("ID") %>" />
    <asp:Label ID="lblSubject" runat="server" Text='<%#Eval("post") %>' Font-Bold="true"/>
</ItemTemplate>

注意:我假设显示帖子的页面名为Details.aspx. 另外,我建议不要打开一个新窗口,而是将用户带到详细信息页面,因为这是通常的做法。如果您真的想打开一个新窗口,请告诉我,我会发布该代码。

现在,Details.aspx您将捕获帖子的 ID 以显示如下:

void Page_Load(object sender, System.EventArgs e) {
    if(!this.IsPostBack) {
        int idPost = Int32.Parse(this.Request.QueryString["ID"];
        //PERFORM YOUR SQL USING THE ID HERE
        //THEN YOU CAN BIND THE VALUES TO ANY SERVER CONTROLS YOU WANT
    }
}

让我知道是否有任何不清楚的地方。

于 2013-08-12T16:19:27.147 回答