SPList.GetItems(view)在尝试获取项目标题时返回异常

Sli*_*ish 4 c# sharepoint

当我尝试:

using (SPWeb web = site.OpenWeb("/"))
{
    SPList list = web.Lists["Blah"];
    SPView view = web.GetViewFromUrl("http://foo.com/Lists/Blah/View%20Name.aspx");

    foreach (SPListItem item in list.GetItems(view))
    {
        writer.write(item.Title);
    }
}
Run Code Online (Sandbox Code Playgroud)

item.Title让我得到一个ArgumentException.

但是当我使用时

foreach (SPListItem item in list.Items)
{
     writer.write(item.Title);
}
Run Code Online (Sandbox Code Playgroud)

它工作得很好.

这里发生了什么?在传递视图时,如何获取列表项的标题?

dar*_*iom 9

检查您的视图定义."标题"是视图定义中包含的字段之一吗?

在您的第一个代码段中,您将根据视图过滤列表中的项目.在第二个代码段中,您直接从列表中访问项目而不进行过滤.

抛开:在list.Items上循环是一个坏主意.遗憾的是,在SharePoint中实现此属性会导致它在循环的每次迭代中从数据库中检索项目.此代码是首选且等效的:

SPListItemCollection listItems = list.Items;
foreach (SPListItem item in listItems)
{
    ...
}
Run Code Online (Sandbox Code Playgroud)