【问题标题】:Argument Exception - Value does not fall within the expected range参数异常 - 值不在预期范围内
【发布时间】:2015-06-23 19:40:48
【问题描述】:

我正在尝试从 SharePoint 列表中获取列值并将其填充到 ASP 文本框中。我使用SPQuery 过滤并获取值。我什至提到了视图字段并增加了列表视图查找阈值。但是当我试图用列字段分配文本框值时,我得到了这个异常:

用户未处理参数异常-值不在预期范围内。

有什么解决方法吗?代码示例:

SPQuery qrySeriesDesc = new SPQuery();
qrySeriesDesc.Query = "<Where><Eq><FieldRef Name='Series'/><Value Type='Text'>" + SeriesNumber + "</Value></Eq></Where>";
qrySeriesDesc.ViewFields = "<FieldRef Name='Series Description'/>";
SPListItemCollection itemCol = list.GetItems(qrySeriesDesc);
foreach (SPListItem item in itemCol)
{
    if (item != null)
    {
        tboxSeriesDescription.Text = item["Series Description"].ToString();            
    }
}

我在以下位置收到上述异常:

tboxSeriesDescription.Text = item["Series Description"].ToString();

【问题讨论】:

标签: c# asp.net sharepoint


【解决方案1】:

尝试从字段中获取,而不是从项目中获取:

        SPField fieldSerDesc = item.Fields.GetFieldByInternalName("SeriesDescription"); //internal name of your fields. Usually eq StaticName.
        tboxSeriesDescription.Text = item[fieldSerDesc.Id].ToString();

或者,例如,如果您的字段是查找字段,您可以这样做:

        SPFieldLookup fieldSerDesc = (SPFieldLookup)item.Fields.GetFieldByInternalName("SeriesDescription");
        tboxSeriesDescription.Text = fieldSerDesc.GetFieldValueAsText(item[fieldSerDesc.Id]);
    }

【讨论】:

  • 我尝试了上面的 sn-p 并且得到了同样的异常。
  • 异常引发时调用堆栈中是否有一些额外的信息?
  • 顺便说一句,您的字段名称包含空格,但是内部名称呢?您是否手动设置 InternalName?如果不是,则等于“Series_x0020_Description”。尝试将其放入您的查询和项目选择器中。
  • 不只是异常消息,我尝试使用内部名称“Series_x0020_Description”。我收到了同样的异常消息。
  • 这很奇怪。你能提供你的 ContentType 定义吗?
【解决方案2】:

您收到错误是因为该字段不存在或拼写错误。

请注意,如果您选择的列不存在,SharePoint 不会引发任何错误。

尝试使用Sharepoint Manager 之类的工具检查字段名称,并始终使用内部名称

【讨论】:

  • 该字段存在于列表中,我已经给出了正确的内部名称,我使用 SharePoint 管理器检查了该字段。
  • 尝试删除 子句和 ViewFields 可能结果为空。你也可以使用spcamlquery之类的工具来执行查询
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多