Search code examples
asp.netnested-repeater

Dynamic data population like stackoverflow comments?


I'm trying to create a comment system just like SO has, but first, I'd like to show first 5 comments for a post and show rest if "display all comments" is clicked for the desired reply.

What is the best way of doing this? I really couldn't found a good way for doing what I want. I must be missing something.

For info, comments datasource is a nested repeater in my page. The outer repeater is replies and inner repeater is comments. Currently I'm binding all comments for all results (even if it has 10000 replies.). Also, I don't want to do paging for comments. I just want it to work the same way as SO.

Any ideas?

EDIT: Now I'm thinking of having 2 tables for comments which are:

  • A table which only has 5 rows of data and will be visible by default. I need filtering to do this. Linq filtering code would be great!

  • A table which has all the results. No filtering. I have no problems with this one.

So here is what I have for the data:

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();
            }
        }

As you can see, I have created a relation between tables in my dataset and I'm binding that datarow to my repeater. I need to do top 5 filtering on the datarow.

Thank you


Solution

  • I suggest to use JSON returned from ASP.NET Web Services with 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/