Spquery Soartingの問題
-
12-11-2019 - |
質問
このsplistItem.Folderは、 "Asset ID"という名前のプロパティを含むSharePointにあります。
私は私のリストにこのデータを持っています
.
Asset ID | Name | Asset Type
1 | GamesFolder | Games
2 | AppsFolder | softwares
3 | MusicFolder | music
私のコードで私はこれをやった
.
SPList objList = web.Lists["MyList"];
SPQuery query = new SPQuery();
query.Query = "<OrderBy><FieldRef Name='Asset ID' Ascending='FALSE'/></OrderBy>";
query.ViewAttributes = "Scope=\"Recursive\"";
query.RowLimit = 1;
SPListItemCollection items = objList.GetItems(query);
return objList.Items[0].Folder.Properties["Asset ID"].ToString();
リスト内のエントリが成形セットであるため、.Folderを使用します。 戻り値は常に "1"です。私の並べ替えが何であるかわからない まったく機能しません。
この問題を解決するのを手伝ってください。ありがとう。
解決
こんにちはCarlsフィールド名に問題があると思います。フィールド名にスペースを含める
特定のフィールドの内部名の内部名が何であるかを探す必要がある場合は、列の名前を名前に名前を付けたときにスペースや特殊文字を含めないでください。フィールド(列)が作成されたら、戻るとフィールドの名前を変更して、スペースや特殊文字を必要に応じて含めるように変更します。SharePointはまだスペースなしで元のフィールド名を保持し、問題なくクエリに直接使用することができます。
他のヒント
またはその内部名を使用してください:
query.query="
少し遅くしかしあなたが問題を抱えているならば、あなたは以下の議長の全部または一部を使うことができるかもしれません: https://gist.github.com/trgraglia/4672176
および受け入れられた回答状態として、フィールド名は問題です。フィールドの静的な名前を使用する必要があります。静的な名前は常に同じままです。列の名前を変更しても。そのため、表示名で列コレクションから列を取得してから、プロパティから静的な名前を取得する必要があります。