2009-03-18 5 views
5

こんにちは私はSharePoint名前空間を使用して開発しています。リスト項目からタイトルフィールドを取得しようとすると、次のエラーが発生しました。SharePoint ListItemエラー:「期待値の範囲内に値が収まらない」

Value does not fall within the expected range

しかし、すべてのフィールドを印刷したので、フィールドが存在することがわかりました。

string value = (string)listItem[listItem.Fields["Title"].Id]; 
Console.WriteLine("Title = " + value); 

更新:リスト項目を取得するために使用されたビューは、どのような分野で役割が利用できるようになりますどの程度を果たしていますか?このコードは、同じ例外で失敗します。どちらの場合もlist.DefaultViewプロパティは、リスト項目を取得するために使用された

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); 
    } 
} 

答えて

1

「タイトル」フィールドはリストに存在する可能性がありますが、デフォルトのビューには存在しません。 これを行うことはできますか?

foreach (var item in list.Items) Console.WriteLine((string)item["Title"]); 
+0

["タイトル"]を参照しようとすると、その例外がスローされます。 – Ries

+0

私は同じ問題に直面しています –

0

理由はわかりませんが、DataListenerとしてSPListItemCollectionからGridViewを作成しました。私も同じエラーがありました。しかし、私はコレクションからのdataTableを取得しようとしました:

SPListItemCollection res = da.getAllItems(); 
DataTable dt = res.GetDataTable(); 

そして私は、リスト項目のタイトルを含むフィールドが「LinkTitle」と呼ばれているというのが私のGridViewに表示されます。したがって、私は自分のコードを書き直しました: SPListItemCollection res = da.getAllItems();

gridView.DataSource = res.Cast<SPListItem>().Select(a=> a["LinkTitle"]); 
gridView.DataBind(); 

そして、すべてが正常に動作します:)

0

「タイトル」フィールドには、デフォルトのビューに(デフォルトで)使用できません。ビュー設定ページを見ると、タイトルがチェックされていますが、「編集メニュー付きアイテムにリンクしている」というラベルが付けられています。

ビューによって公開されるフィールドは、実際には "LinkTitle"という名前です(これは、list.DefaultView.ViewFieldsを列挙することで確認できます)。

item.Titleitem["LinkTitle"].ToString()に置き換えるだけで問題を解決できます。

1

私は

(例外が作成されたフィールド、IDフィールドを含む)フィールドがSPQuery.ViewFieldsに要求されなかった場合、あなたはおそらくそれを得ることができない

if (item.Fields.ContainsField("Last_x0020_Modified")) 
{ 
    if (query.ViewFields.Contains("Last_x0020_Modified")) 
    ... 
のようなもの

B/Cをお勧めしたいです

5

エラーが解決したかどうかわかりません。しかし、私は同じ問題に直面していた、私は問題の解決策を見つけた。あなたがに行かなければなら


の全体管理]> [アプリケーションの管理]> [管理Webアプリケーション
使用中のWebアプリケーションを選択し、選択します。
「一般設定]> [リソーススロットリング」リボンを介しました。

スクロールして、デフォルト値が8であるという点で "List View Lookup Threshold"を探して、エラーがなくなるまで値を増やしてください。

Reference Link

+1

私はこの非常に問題がありました。フィールド名が正しいことを確認しました。また、マイクロソフトではこのデフォルト値を8から12に変更したようです。私の開発環境では12でしたが、問題が発生したステージング環境では8でした。設定の変更を有効にするために、IISのアプリケーションプールをリセットする必要がありました。 –

1

列は、デフォルトのビューの一部ではなかったので、私はこの問題を持っていました。ビューに頼る代わりに、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(); 
    } 
関連する問題