ASP.NET Repeater - 在HeaderTemplate中显示数据绑定

时间:2012-05-21 04:32:16

标签: c# asp.net repeater

我有一个转发器我想在我的数据库的HeaderTemplate中添加一个标题

这是我目前的代码

<asp:Repeater ID="topicView" runat="server">
    <HeaderTemplate>
        <tr>
            <td>
                <h1><%#DataBinder.Eval(Container.DataItem, "TopicName")%></h1>
            </td>
        </tr>
    </HeaderTemplate>
    <ItemTemplate>
        <tr>
            <td>
                <%#DataBinder.Eval(Container.DataItem, "PostBody")%>
            </td>
        </tr>
    </ItemTemplate>
    <FooterTemplate>
        <tr>
            <td>
            </td>
        </tr>
    </FooterTemplate>
</asp:Repeater>

但我的标题中没有显示任何内容。我听说你不能在标题中使用数据仓,所以有人可以推荐如何做到这一点吗?

这是我的CS代码

    string topic = Request.QueryString["topicid"].ToString();

    // Define the select statement.
    // All information is needed
    string selectSQL = "SELECT * FROM PostView WHERE TopicID ='" + topic + "'";

    // Define the ADO.NET Objects
    SqlConnection con = new SqlConnection(connectionString);
    SqlCommand cmd = new SqlCommand(selectSQL, con);
    con.Open();
    SqlDataReader postView = cmd.ExecuteReader();
    topicView.DataSource = postView;
    topicView.DataBind();

1 个答案:

答案 0 :(得分:4)

您不需要绑定到数据源,只需绑定到页面的简单属性即可。在HeaderTemplate:

中使用它
<h1><%# TopicName %></h1>

然后将TopicName作为公共属性添加到代码隐藏。

public string TopicName { get; set; }

然后在运行查询时设置它:

TopicName = Request.QueryString["topicid"].ToString();

旁注

不确定您是否知道,但是您应该注意SQL注入。不是将查询字符串直接注入到SQL查询中,而是使用

string selectSQL = "SELECT * FROM PostView WHERE TopicID ='{0}';

然后将主题作为参数添加到SqlCommand中。