我想为我的个人网站写评论部分,我希望用户可以根据需要重播特定评论..并且重播必须低于他们回答的评论。 我使用转发器控制器,这是我的代码:
<asp:Repeater ID="rptComments" runat="server" OnItemCommand="rptComments_ItemCommand">
<ItemTemplate>
<div class="media comment text-right" runat="server" visible='<%# Convert.ToBoolean(Eval("CommentIsReplay")) == false %>'>
<div class="media-body">
<h4>
<asp:Literal ID="lblCommentAuthorName" Text='<%# Eval("CommentAuthorName") %>' runat="server"></asp:Literal></h4>
<span>
<asp:Label ID="lblCommentDate_FA" Text='<%# Eval("CommentDate_FA") %>' runat="server"></asp:Label></span>
<p>
<asp:Literal ID="lblCOmmentText" Text='<%# Eval("COmmentText") %>' runat="server"></asp:Literal>
</p>
</div>
<div class="media-bottom clearfix">
<asp:Button ID="Button1" runat="server"
Text="Replay"
CommandName="getCommentCode"
CommandArgument='<%#DataBinder.Eval(Container.DataItem,"CommentCode") %>'
CssClass="btn btn-default pull-left" Style="max-width: 20%;" />
</div>
</div>
<div class="media comment text-right commentReplay" runat="server" visible='<%# Convert.ToBoolean(Eval("CommentIsReplay")) == true %>'>
<div class="media-body">
<h4>
<asp:Literal ID="Literal1" Text='<%# Eval("CommentAuthorName") %>' runat="server"></asp:Literal></h4>
<p>
<asp:Literal ID="Literal2" Text='<%# Eval("COmmentText") %>' runat="server"></asp:Literal>
</p>
</div>
<div class="media-bottom clearfix">
<asp:Button ID="Button2" runat="server"
Text="Replay"
CommandName="getCommentCode"
CommandArgument='<%#DataBinder.Eval(Container.DataItem,"CommentCode") %>'
CssClass="btn btn-default pull-left" Style="max-width: 20%;" />
</div>
</div>
</ItemTemplate>
正如你所看到的,我写了2节并检查行以了解什么评论是重播类型和谁不是.. 我存储评论代码用于重播和一个字段来检查是否重播...
我的问题是我如何使用此代码重新排序行。 感谢
答案 0 :(得分:1)
所以,我实现了嵌套的中继器,它运行良好。在这里你可以查看代码...
主Repeater使用Post外键从Comments Table中检索数据。第二个中继器检查表找到的是父ID有任何childern?以及它与OnItemDataBound的合作。
<asp:repeater id="rptComments" runat="server" onitemcommand="rptComments_ItemCommand" onitemdatabound="rptComments_ItemDataBound">
<ItemTemplate>
<div class="media comment text-right" runat="server" >
<div class="media-body">
<h4>
<asp:Literal ID="lblCommentAuthorName" Text='<%# Eval("CommentAuthorName") %>' runat="server"></asp:Literal></h4>
<span>
<asp:Label ID="lblCommentDate_FA" Text='<%# Eval("CommentDate_FA") %>' runat="server"></asp:Label></span>
<p>
<asp:Literal ID="lblCOmmentText" Text='<%# Eval("COmmentText") %>' runat="server"></asp:Literal>
</p>
</div>
<div class="media-bottom clearfix">
<asp:Button ID="Button1" runat="server"
Text="Replay"
CommandName="getCommentCode"
CommandArgument='<%#DataBinder.Eval(Container.DataItem,"CommentCode") %>'
CssClass="btn btn-default pull-left" Style="max-width: 20%;" />
</div>
</div>
<asp:Repeater ID="rptReplay" runat="server" onitemcommand="rptComments_ItemCommand">
<ItemTemplate>
<div class="media comment text-right commentReplay" runat="server">
<div class="media-body">
<h4>
<asp:Literal ID="Literal1" Text='<%# Eval("CommentAuthorName") %>' runat="server"></asp:Literal></h4>
<span>
<asp:Label ID="Label1" Text='<%# Eval("CommentDate_FA") %>' runat="server"></asp:Label></span>
<p>
<asp:Literal ID="Literal2" Text='<%# Eval("COmmentText") %>' runat="server"></asp:Literal>
</p>
</div>
<div class="media-bottom clearfix">
<asp:Button ID="Button2" runat="server"
Text="Replay"
CommandName="getCommentCodeParent"
CommandArgument='<%#DataBinder.Eval(Container.DataItem,"CommentCode") %>'
CssClass="btn btn-default pull-left" Style="max-width: 20%;" />
</div>
</div>
</ItemTemplate>
</asp:Repeater>
</ItemTemplate>
</asp:repeater>
和代码背后:
protected void rptComments_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
TblComment item = (TblComment)(e.Item.DataItem);
Int32 code = Convert.ToInt32(item.CommentCode);
var replay = (from a in db.TblComments
where a.CommentReplayTo == code && a.CommentIsReplay == true && a.CommentIsApprove == true
select a).ToList();
Repeater rptReplay = (Repeater)e.Item.FindControl("rptReplay");
rptReplay.DataSource = replay;
rptReplay.DataBind();
}
}
我希望将来帮助某人..
感谢
答案 1 :(得分:0)
这是我实施的解决方案。首先我使用了一个datalist并在其中使用了另一个datalist(我的猜测是转发器应该也能正常工作)。我的表格中有一个名为parent commentid的列。如果这是零,那么它是一个新的评论或如果有人回复评论,这将保存与parrent评论ID中的原始评论ID。然后在外部数据主义者的itemdatabound事件中,我将查询数据库中所有注释,其中包含父标志字段中当前注释的id,并将其绑定到内部数据列表 -