0

「アセットID」という名前のプロパティを含むこのSPListItem.Folderが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();

リスト内のすべてのエントリがDocumentSetであるため、.Folderを使用します。戻り値は常に「1」です。ソートがまったく機能しない理由がわかりません。

この問題の解決にご協力ください。ありがとう。

4

3 に答える 3

1

こんにちはカールス私はフィールド名に問題があると思います。Uフィールド名にスペースを含める

特定のフィールドの内部名を探す必要がないようにする場合は、最初に列に名前を付けるときに、スペースや特殊文字を含めないでください。フィールド(列)が作成されたら、戻ってフィールドの名前を変更し、必要に応じてスペースまたは特殊文字を含めます。SharePointはスペースなしで元のフィールド名を保持し、問題なくクエリで直接使用できます。

于 2012-02-24T10:29:17.707 に答える
0

またはそのinternalNameを使用します:

query.Query = "<OrderBy> <FieldRef Name ='Asset_x0020_ID' Ascending ='FALSE' /> </ OrderBy>";

于 2013-12-06T00:44:21.387 に答える
0

少し遅れますが、問題が発生した場合は、次の要点の全部または一部を使用できる可能性があります: https ://gist.github.com/trgraglia/4672176

そして、受け入れられた答えが述べているように、フィールド名が問題です。フィールドの静的な名前を使用する必要があります。静的な名前は常に同じままです。列の名前が変更されても。したがって、表示名で列コレクションから列を取得してから、プロパティから静的名を取得する必要があります。

于 2014-10-07T17:01:17.483 に答える