我有一个转发器我想在我的数据库的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();
答案 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中。