小弟做了个简单的论坛,只有2个页面,主界面是用gridview做的,还有个是显示发表主题后和回复文章后的界面,显示发表主题我是用gridview做的,没有问题.
问题就在于,回复主题我是用dataList中嵌套用户控件做的.这个页面就包括了gridview(显示发表主题)+datalist(显示回复主题),datalist,我采用了分页技术.
现在的问题就是,我在datalist中使用的用户控件,有个全局变量replyID总是从最处开始取值.
具体代码.
用户控件.cs
string replyID; //就是这个
public string ReplyID
{
set
{
this.replyID = value.ToString();
}
}
protected void Page_Load(object sender, EventArgs e)
{
string postID = Request.QueryString["postID"].ToString();
SqlConnection con = DB.CreateDB();
con.Open();
try
{
SqlCommand cmd = new SqlCommand("select topic,content,replyer,BBS_identity,replyTime,floor from BBSreply where replyID='"+replyID+"'and postID='"+postID+"'", con);
SqlDataReader sdr = cmd.ExecuteReader();
while (sdr.Read())
{
this.lbl_topic.Text = sdr.GetString(0);
this.lbl_content.Text = sdr.GetString(1);
this.lbl_BBSName.Text = sdr.GetString(2);
this.lbl_BBSIdentity.Text = sdr.GetString(3);
this.lbl_replyTime.Text = sdr.GetDateTime(4).ToString();
this.lbl_number.Text = sdr.GetInt32(5).ToString();
}
sdr.Close();
}
catch (Exception ex)
{
Response.Write(ex.Message);
}
finally
{
con.Close();
}
}
我在他上一个界面传值给了他
<asp:DataList ID="DataList1" runat="server" RepeatColumns="1" Style="position: relative"
Width="860px">
<ItemTemplate>
<uc2:top_reply id="Top_reply1" runat="server" ReplyID='<%# Eval("replyID","{0}") %>' /> //在这里
</ItemTemplate>
<AlternatingItemTemplate>
<uc2:top_reply id="Top_reply2" runat="server" ReplyID='<%# Eval("replyID","{0}") %>' /> //和这里
</AlternatingItemTemplate>
</asp:DataList>
他现在的效果是,replyID总是从第一个开始取,这就造成我点击文章主体页面后,有很多的空记录,"select topic,content,replyer,BBS_identity,replyTime,floor from BBSreply where replyID='"+replyID+"'and postID='"+postID+"'"这个控制.
我想达到的效果是,当我点击文章主题后只显示回复这篇文章的记录,哪些空记录就不显示,也在datalist中不占用行.
这是论坛的收尾工作了,请大家务必指点我一下,就快要交毕业设计了,确实想不出来了哈,在此非常感谢大家.