C# Sitecore提要最新2项
我有一个sitecore web部件,我正在尝试按日期显示前两个最新项目。我有麻烦,因为我只能得到最新的项目显示 对于ascx代码:C# Sitecore提要最新2项,c#,asp.net,sitecore,C#,Asp.net,Sitecore,我有一个sitecore web部件,我正在尝试按日期显示前两个最新项目。我有麻烦,因为我只能得到最新的项目显示 对于ascx代码: <asp:Repeater ID="newsContainer" runat="server"> <ItemTemplate> <div class="newsItem"> <h2><a href="/about-us/news.aspx">News</a&
<asp:Repeater ID="newsContainer" runat="server">
<ItemTemplate>
<div class="newsItem">
<h2><a href="/about-us/news.aspx">News</a></h2>
<a href="<%# SitecoreUtility.NavigateUrl((Item)Container.DataItem)%>" class="newsHeadline">
<span> <sc:Date ID="Date1" Item="<%# Container.DataItem %>" Field="Posted-Date" Format="MM.dd.yyyy" runat="server" />
<sc:Text ID="Text1" Item="<%# Container.DataItem %>" Field="Title" runat="server" />
</span>
</a>
<!-- <p class="newsSummary">
<asp:Literal ID="litBody" runat="server" Text="<%# SitecoreUtility.TruncateByWords(((Item)Container.DataItem).Fields[Constants.Fields.BODY].Value, 20) %>"></asp:Literal>
...
<a href="<%# SitecoreUtility.NavigateUrl((Item)Container.DataItem)%>" class="more">+ More</a></p> -->
</div>
</ItemTemplate>
</asp:Repeater>
<asp:Panel ID="pnlPagination" runat="server"></asp:Panel>
<asp:Panel ID="pnlArchive" runat="server">
<!-- <div class="newsArchiveLink">
<a href="?type=archive">View Archived News</a>
</div> -->
</asp:Panel>
<asp:Panel ID="pnlCurrent" runat="server">
<div class="newsArchiveLink">
<a href="?type=current">View Current News</a>
</div>
</asp:Panel>
-->
对于ASCX.CS文件:
public partial class Homepage_NewsListing : BaseSublayout
{
int CurrentPage = 1;
int PageSize = Constants.Values.SEARCH_SMALL_LIST;
protected void Page_Load(object sender, EventArgs e)
{
CurrentPage = int.Parse(WebUtil.GetQueryString("page", "1"));
List<Item> newsListings = new List<Item>();
Item newsItems = SitecoreUtility.Db.GetItem(Constants.Items.NEWS);
if (WebUtil.GetQueryString("type", "") == "archive")
{
newsListings = newsItems.Children.Where(item =>
(SitecoreUtility.FormatDateAtMidnight(item, Constants.Fields.ARCHIVEDATE) <= DateTime.Now)
&&
(!string.IsNullOrEmpty(item.Fields[Constants.Fields.ARCHIVEDATE].Value))
).OrderBy(item => item.Fields[Constants.Fields.POSTED_DATE].Value).ToList();
pnlArchive.Visible = false;
//pnlCurrent.Visible = true;
pnlCurrent.Visible = false;
}
else
{
newsListings = newsItems.Children.Where(item =>
(SitecoreUtility.FormatDateAtMidnight(item, Constants.Fields.ARCHIVEDATE) > DateTime.Now)
||
(string.IsNullOrEmpty(item.Fields[Constants.Fields.ARCHIVEDATE].Value))
).OrderBy(item => item.Fields[Constants.Fields.POSTED_DATE].Value).ToList();
//pnlArchive.Visible = true;
pnlArchive.Visible = false;
pnlCurrent.Visible = false;
}
newsContainer.DataSource = DisplayResults(newsListings.OrderByDescending(item => item.Fields[Constants.Fields.POSTED_DATE].Value).ToList());
newsContainer.DataBind();
}
protected List<Item> DisplayResults(List<Item> results)
{
pnlPagination.Controls.Add(new Pager(results.Count, PageSize, CurrentPage).BuildPaging());
if (CurrentPage > 1)
return results.Skip((CurrentPage - 1) * PageSize).Take(PageSize).ToList();
return results.Take(PageSize).ToList();
}
}
public分部类主页\u新闻列表:BaseSublayout
{
int CurrentPage=1;
int PageSize=Constants.Values.SEARCH\u SMALL\u列表;
受保护的无效页面加载(对象发送方、事件参数e)
{
CurrentPage=int.Parse(WebUtil.GetQueryString(“page”,“1”);
List newsListings=新列表();
Item newsItems=SitecoreUtility.Db.GetItem(常量.Items.NEWS);
if(WebUtil.GetQueryString(“类型”,“归档”)
{
newsListings=newsItems.Children.Where(item=>
(SitecoreUtility.FormatDateAtMidnight(item,Constants.Fields.ARCHIVEDATE)item.Fields[Constants.Fields.POSTED_DATE].Value).ToList();
pnlArchive.Visible=false;
//pnlCurrent.Visible=true;
pnlCurrent.Visible=false;
}
其他的
{
newsListings=newsItems.Children.Where(item=>
(SitecoreUtility.FormatDateAtMidnight(item,Constants.Fields.ARCHIVEDATE)>DateTime.Now)
||
(string.IsNullOrEmpty(item.Fields[Constants.Fields.ARCHIVEDATE].Value))
).OrderBy(item=>item.Fields[Constants.Fields.POSTED_DATE].Value).ToList();
//pnlArchive.Visible=true;
pnlArchive.Visible=false;
pnlCurrent.Visible=false;
}
newsContainer.DataSource=DisplayResults(newsListings.OrderByDescending(item=>item.Fields[Constants.Fields.POSTED_DATE].Value).ToList());
newscanner.DataBind();
}
受保护的列表显示结果(列表结果)
{
pnlPagination.Controls.Add(新寻呼机(results.Count、PageSize、CurrentPage.BuildPaging());
如果(当前页面>1)
返回结果。跳过((当前页-1)*PageSize.Take(PageSize.ToList();
返回结果.Take(PageSize.ToList();
}
}
首先,我会尝试使您的代码更简单一点(用于调试),并使用快速查询来提取日期范围内的项目
var date = DateTime.Now.AddMonths(3);
var dateString = date.Year.ToString() + date.Month.ToString().PadLeft(2, '0') + date.Day.ToString().PadLeft(2, '0');
var newsList = Sitecore.Context.Database.SelectItems("fast:/sitecore/content/home/your-path-to-news/*[@@templatename='Your template name' and @POSTED_DATE > '" + dateString + "']").ToList();
newsList = newsList.OrderByDescending(n => n.Fields["POSTED_DATE"].Value).Take(2).ToList();
newsContainer.DataSource = newsList;
newsContainer.DataBind();
您是否尝试调试代码?您可能希望使代码更简单一些。例如,在Paleload中对列表进行两次排序。您可能还需要考虑使用ListVIEW与PagedDataSource一起使用,这使得分页变得更容易,并且更少定制编程;