C# Sitecore提要最新2项

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&

我有一个sitecore web部件,我正在尝试按日期显示前两个最新项目。我有麻烦,因为我只能得到最新的项目显示

对于ascx代码:

    <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一起使用,这使得分页变得更容易,并且更少定制编程;