1

我正在尝试创建一个评论系统,就像 SO 一样,但首先,我想显示帖子的前 5 条评论,如果单击“显示所有评论”以获得所需的回复,则显示休息。

这样做的最佳方法是什么?我真的找不到做我想做的事的好方法。我肯定错过了什么。

有关信息,评论数据源是我页面中的嵌套转发器。外部转发器是回复,内部转发器是评论。目前我正在绑定所有结果的所有评论(即使它有 10000 个回复。)。另外,我不想为评论分页。我只是希望它以与 SO 相同的方式工作。

有任何想法吗?

编辑:现在我正在考虑有 2 个表用于评论,它们是:

  • 一个只有 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 名过滤。

谢谢

4

2 回答 2

1

我建议将 ASP.NET Web 服务返回的 JSON 与 jQuery 一起使用。

http://www.mikesdotnetting.com/Article/96/Handling-JSON-Arrays-returned-from-ASP.NET-Web-Services-with-jQuery

http://www.electrictoolbox.com/json-data-jquery-php-mysql/

于 2011-03-04T21:58:00.920 回答
0

如果您想将剩余的项目附加到当前的转发器项目,您可以在注释末尾有一个按钮,该按钮附加到一个 jquery 函数,它将为您获取其余的注释。然后,一旦收到数据,您的函数只需将评论附加到其他评论列表中,模仿转发器正在做的事情并替换“全部显示”按钮。

如果您不想使用任何 ajax 来执行此操作,那么您可能需要Repeater使用一组新数据重新绑定注释,而不仅限于前 5 个结果。

编辑:根据您的评论和您已编辑的更改,我将使用一个包含所有评论的表格,并在DataBinding每个评论中将行样式设置为使用全局计数器可见。一旦你有超过 5 个,将每个项目的样式设置为隐藏样式。当他们单击“全部显示”按钮时,只需将样式从隐藏切换为可见,其余隐藏的评论即可。这将节省您复制前 5 个项目的数据,如果有很多带有评论的答案,这可能会变成很多额外的行。

于 2011-03-04T21:57:02.650 回答