[英]SharePoint ListItem Error: “Value does not fall within the expected range”
您好我正在使用 SharePoint 命名空间进行开发,当我尝试从列表项中检索标题字段时遇到以下错误。
值不在预期范围内
但是我知道该字段存在,因为我打印了所有字段。
string value = (string)listItem[listItem.Fields["Title"].Id];
Console.WriteLine("Title = " + value);
更新:用于检索列表项的视图在多大程度上在哪些字段可用? 此代码失败并出现相同的异常:
SPListItemCollection items = list.GetItems(list.DefaultView);
foreach (SPListItem listItem in items)
{
try
{
Console.WriteLine("Title = " + listItem.Title);
}
catch (Exception e)
{
Console.WriteLine("Exception: " + e.Message);
}
}
在这两种情况下,list.DefaultView 属性都用于检索列表项。
我不知道你的错误是否解决了。 但是我遇到了同样的问题,我找到了解决问题的方法。
您必须 go 才能:
管理中心 > 应用程序管理 > 管理 Web 应用程序
select Web 应用在使用和选择:
通过功能区“常规设置 > 资源限制”。
在该向下滚动并查找“ List View Lookup Threshold
”,默认值为8
,增加该值直到错误消失。
我遇到了这个问题,因为该列不是默认视图的一部分。 在创建 SPListItemCollection 时直接查询特定列,而不是依赖视图。
SPList cityList = web.Lists[cityListName];
SPListItemCollection items = cityList.GetItems("Title","LocCode");
foreach (SPListItem item in items)
{
cityName = item["Title"].ToString().Trim();
cityCode = item["LocCode"].ToString().Trim();
}
我建议像
if (item.Fields.ContainsField("Last_x0020_Modified"))
{
if (query.ViewFields.Contains("Last_x0020_Modified"))
...
B/c 如果在 SPQuery.ViewFields 中没有请求该字段,您可能无法获取它(例外包括 Created 字段、ID 字段)
“标题”字段可能存在于列表中,但不存在于默认视图中。 你能做这个吗?
foreach (var item in list.Items) Console.WriteLine((string)item["Title"]);
我不知道为什么,但我从 SPListItemCollection 创建了一个 GridView 作为数据源。 我有同样的错误。 但我试图从集合中获取数据表:
SPListItemCollection res = da.getAllItems();
DataTable dt = res.GetDataTable();
然后我在我的 GridView 中看到包含列表项标题的字段称为“LinkTitle”。 所以,我重写了我的代码: SPListItemCollection res = da.getAllItems();
gridView.DataSource = res.Cast<SPListItem>().Select(a=> a["LinkTitle"] );
gridView.DataBind();
一切正常:)
“标题”字段(默认情况下)在默认视图中不可用。 如果您查看视图设置页面,标题被选中,但它被标记为“链接到带有编辑菜单的项目”。
视图公开的字段实际上名为“LinkTitle”(您可以通过枚举list.DefaultView.ViewFields
来确认这一点)。
您的问题的解决方案只是将item.Title
替换为item["LinkTitle"].ToString()
。
如果您重命名已存在的列,则可能会出现此问题。 尝试删除它并创建一个具有相同名称的新文件。
或者在我发生的另一种情况下,我不小心用希腊语写了一个列名的字母。 例如。 "IsCooperation" Ι 是一个希腊字符
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.