检索列表项并显示它们

时间:2016-09-21 20:44:54

标签: c# sharepoint-2010 web-parts caml

我有一组通过CAML查询检索的列表项。我只设置查询只检索三个lates项。

从项目集合中我想通过索引检索这三个项目并将它们输出到占位符,但这当前不起作用。有什么我错过了吗?

CAML查询:

string displayOnHomePage = "True";

SPQuery queryNewsItems = new SPQuery();

queryNewsItems.Query = @"<Where>" +
                        "<Neq>" +
                        "<FieldRef Name='DisplayOnHomePage'/>" +
                        "<Value Type='Boolean'>" + displayOnHomePage +
                        "</Value>" +
                        "</Neq>" +
                        "</Where>" +
                        "<OrderBy>" +
                        "<FieldRef Name='ImageCreateDate' Ascending ='False'/>" +
                        "</OrderBy>";

queryNewsItems.RowLimit = 3;
SPListItemCollection newsItemsCollection = newsItems.GetItems(queryNewsItems);

获取第一个列表项并尝试使用占位符在页面上显示它们:

string newsHeadlineItem1 = newsItemsCollection[0]["NewsHeadline"].ToString();
string newsDescriptionItem1 = newsItemsCollection[0]["NewsDescription"].ToString();

plhNewsHeadlineItem1.Controls.Add(new LiteralControl(newsHeadlineItem1));
plhNewsDescriptionItem1.Controls.Add(new LiteralControl(newsDescriptionItem1));

获取第二个列表项并尝试使用占位符在页面上显示它们:

string newsHeadlineItem2 = newsItemsCollection[1]["NewsHeadline"].ToString();
string newsDescriptionItem2 = newsItemsCollection[1]["NewsDescription"].ToString();

plhNewsHeadlineItem2.Controls.Add(new LiteralControl(newsHeadlineItem2));
plhNewsDescriptionItem2.Controls.Add(new LiteralControl(newsDescriptionItem2));

我没有使用foreach循环遍历项目集合的共鸣是因为我想控制它们显示在哪个占位符上。

第一项将输出到plhNewsHeadlineItem1和plhNewsDescriptionItem1占位符。

第二项将输出到plhNewsHeadlineItem2和plhNewsDescriptionItem2占位符。

同样,thrid项目将输出到plhNewsHeadlineItem3 plhNewsDescriptionItem3占位符。

这是访问和显示CAML查询检索的项目集合中的三个列表项的正确方法吗?

1 个答案:

答案 0 :(得分:0)

这实际上是有效的,问题是我正在使用的库/列表(原始从列表模板创建)由于某种原因没有拾取字段。我删除了库/列表并重新创建了它,它完全符合预期。