我正在寻找一行代码,可以显示某个主题在我的论坛中有多少回复。我有一个转发器(REPEATER_1)来显示有关每个主题的其他信息,例如标题和文本。例如,要获得标题,我使用:
<%# DataBinder.Eval(Container, "DataItem.title")%>
这很好用,但是为了计算回复,我需要访问另一个表,并计算该主题的所有回复。我使用以下SelectCommand:
"SELECT COUNT(ID) FROM [replies] WHERE parent='" & <%# DataBinder.Eval(Container, "DataItem.ID")%> & "';"
但是如何使用&lt;%#XXXX ..%&gt;
从页面的形式(以及转发器区域内)执行此SelectCommand我知道有替代方法使用代码隐藏,但我正在练习使用&lt;%#XXXX ..%&gt;
这样做此外,使用“&lt;%#XXXX ..%&gt;”在表单内部执行脚本时调用的是什么?它会让我更容易在网上搜索,因为谷歌或这个网站无法搜索“&lt;%#”
答案 0 :(得分:0)
我会在Repeater的ItemDataBound
事件中执行此操作。
我正在关注您当前的方法,但您应该使用获取主题的查询返回回复计数。按照您的方式进行操作,您将多次调用数据库。
protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
// !! use a parameterized query here to avoid SQL injection
string query = String.Format("SELECT x FROM y WHERE z = {0}", DataBinder.Eval(e.Item.DataItem, "SomeColumn"));
//execute your query to get reply count
int replyCount = ExecuteQuery(query); // !! example
Label lbl = e.Item.FindControl("ReplyCountLabel") as Label;
if (lbl != null)
{
lbl.Text = replyCount.ToString()
}
}