我正在尝试像SO一样创建评论系统,但首先,如果点击“显示所有评论”进行所需的回复,我想显示帖子的前5条评论并显示休息。
这样做的最佳方式是什么?我真的找不到做我想做的事的好方法。我一定错过了什么。
有关信息,注释数据源是我页面中的嵌套转发器。外部转发器是回复,内部转发器是注释。目前我绑定所有结果的所有评论(即使它有10000个回复。)。另外,我不想为评论做分页。我只是希望它的工作方式与SO相同。
有什么想法吗?
编辑:现在我正在考虑有两个表用于评论:
一个只有5行数据且默认可见的表格。我需要过滤才能做到这一点。 Linq过滤代码会很棒!
包含所有结果的表格。没有过滤。我对此没有任何问题。
以下是我对数据的看法:
DataRowView dv = e.Item.DataItem as DataRowView;
if (dv != null)
{
Repeater commentRepeater = e.Item.FindControl("childRepeater") as Repeater;
if (commentRepeater != null)
{
commentRepeater.DataSource = dv.CreateChildView("myrelation");
commentRepeater.DataBind();
}
}
正如您所看到的,我在我的数据集中创建了表之间的关系,并且我将该数据行绑定到我的转发器。我需要对数据行进行前5个过滤。
谢谢
答案 0 :(得分:1)
我建议使用带有jQuery的ASP.NET Web Services返回的JSON。
答案 1 :(得分:0)
如果你想将左边的项目附加到当前的转发器项目,你可以在附加到jquery函数的coments末尾有一个按钮,它将为你获取其余的注释。然后,一旦收到数据,您的功能就会将评论附加到其他评论列表中,模仿转发器正在做什么并替换“全部显示”按钮。
如果您不想使用任何ajax来执行此操作,那么您可能需要使用一组新数据重新绑定注释Repeater
,这些数据不仅限于前5个结果。
编辑:根据您编辑的评论和更改,我会使用一个包含所有评论的表格,并在每个评论的DataBinding
中将行样式设置为可见全球反击。一旦你有超过5个样式将样式设置为每个项目的隐藏样式。当他们单击show all按钮时,只需将样式从隐藏切换为可见,即可隐藏其余注释。如果有很多带有注释的答案,这将节省您复制前5个项目的数据,这些项目可能会变成许多额外的行。