检索列表项并显示它们

本文关键字:显示 列表 检索 | 更新日期: 2023-09-27 18:08:15

我有一个通过CAML查询检索的列表项集合。我只将查询设置为只检索三个最新项。

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

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占位符。

类似地,第三项将输出到plhNewsHeadlineItem3 plhNewsDescriptionItem3占位符。

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

检索列表项并显示它们

这实际上是工作的,问题是我正在使用的库/列表(最初从列表模板创建)由于某种原因,字段没有被拾取。我删除了库/列表并重新创建了它,它一切正常