当我尝试:
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)
它工作得很好.
这里发生了什么?在传递视图时,如何获取列表项的标题?
检查您的视图定义."标题"是视图定义中包含的字段之一吗?
在您的第一个代码段中,您将根据视图过滤列表中的项目.在第二个代码段中,您直接从列表中访问项目而不进行过滤.
抛开:在list.Items上循环是一个坏主意.遗憾的是,在SharePoint中实现此属性会导致它在循环的每次迭代中从数据库中检索项目.此代码是首选且等效的:
SPListItemCollection listItems = list.Items;
foreach (SPListItem item in listItems)
{
...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4552 次 |
| 最近记录: |