在Repeater Control中绑定数据&使用超链接链接数据库记录

时间:2013-08-12 15:10:02

标签: bind repeater

我需要有关Repeater Control& amp ;;的帮助数据绑定。

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

表结构是:

  

ID   标题   交

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的新手并原谅我,如果我犯了任何错误,因为这是我第一次在这里发帖。

1 个答案:

答案 0 :(得分:0)

欢迎使用StackOverflow!

将ItemTemplate更改为使用ASP.NET HyperLink,如下所示:

<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
    }
}

如果有什么不清楚,请告诉我。