c# - Sitecore sorting by created date issue -


i having trouble figuring out how can sort list of items in descending order according created date (i know sitecore allows sorting items in ascending order created date). i'm still pretty new sitecore, i'm not sure do...any suggestions helpful!

 item[] blogposts = homeitem.axes.selectitems(@"child::*[@@templatename='blogcomment']");              if (blogposts != null)             {                  dataset ds = new dataset();                 datatable posts = ds.tables.add("posts");                  posts.columns.add("postname", type.gettype("system.string"));                 posts.columns.add("datecreated", type.gettype("system.string"));                 posts.columns.add("postcomment", type.gettype("system.string"));                  foreach(item postitem in blogposts)                 {                     datarow dr = posts.newrow();                      dr["postname"] = postitem.fields["name"].value;                     dr["datecreated"] = postitem.statistics.created;                     dr["postcomment"] = postitem.fields["comment"].value;                      posts.rows.add(dr);                 }                 commentslistrptr.datasource = ds;//this repeater i'm using show data                 commentslistrptr.datamember = "posts";                 commentslistrptr.databind();             } 

you can sort items using linq:

var items = sitecore.context.database.selectitems("/sitecore/content/home/*"); items = items.orderby(x => x[sitecore.fieldids.created]).reverse(); 

obviously change query or item list fit requirements.

edit following addition of code:

set repeater in ascx, we'll use sitecore fieldrenderer disable webediting in control:

<asp:repeater id="rptblogposts" runat="server" onitemdatabound="rptblogposts_itemdatabound">     <headertemplate><table></headertemplate>     <itemtemplate>         <tr>             <td><sc:fieldrenderer runat="server" id="postname" fieldname="name" disablewebediting="true" /></td>             <td><asp:literal runat="server" id="postdate"></asp:literal></td>             <td><sc:fieldrenderer runat="server" id="postcomment" fieldname="comment" disablewebediting="true" /></td>         </tr>     </itemtemplate>     <footertemplate></table></footertemplate> </asp:repeater> 

and in code behind on page_load bind control, bind datasource of repeater , set fieldrenderer item , display created date in format suit.

private void page_load(object sender, eventargs e) {     item[] blogposts = homeitem.axes.selectitems(@"child::*[@@templatename='blogcomment']");     if (blogposts.any())     {         rptblogposts.datasource = blogposts.orderby(x => x[sitecore.fieldids.created]).reverse();         rptblogposts.databind();     } }  protected void rptblogposts_itemdatabound(object sender, repeateritemeventargs e) {     if (e.item.itemtype == listitemtype.item || e.item.itemtype == listitemtype.alternatingitem)     {         var currentitem = e.item.dataitem item;         var scpostname = e.item.findcontrol("postname") fieldrenderer;         var litpostdate = e.item.findcontrol("postdate") literal;         var scpostcomment = e.item.findcontrol("postcomment") fieldrenderer;          scpostname.item = currentitem;         litpostdate.text = currentitem.statistics.created.tostring("h:mm:ss mm/dd/yy");         scpostcomment.item = currentitem;     } } 

your sitecore query can expensive performance wise depending on how content have how deep content tree is, i'm not sure version of sitecore using, in case index content (with lucene) , use retrieve posts. if using sitecore 7 take @ post linq sitecore


Comments

Popular posts from this blog

html - Sizing a high-res image (~8MB) to display entirely in a small div (circular, diameter 100px) -

java - IntelliJ - No such instance method -

identifier - Is it possible for an html5 document to have two ids? -