4

各「listItem」にはアイテムが含まれていますが、それらを取得する方法は? しばらくやってるけど失敗ばかり

助けて、ありがとう

camlQuery は、Web のいくつかのテストと例からのものであり、役に立ちませんでした (多くの変更がありました)。

            ClientContext clientContext =  new ClientContext("http://xxx.xxx.com");
            List list = clientContext.Web.Lists.GetById(new Guid("{F91A0F26-2826-4B3B-AF30-ED7DE4494C7B}"));
            clientContext.Load(list);

            clientContext.ExecuteQuery();
            CamlQuery camlQuery = new CamlQuery();
            camlQuery.ViewXml = @"<queryOptions><QueryOptions><ViewAttributes Scope='RecursiveAll'/><Folder></Folder></QueryOptions></queryOptions>";
            ListItemCollection listItems = list.GetItems(camlQuery);
            clientContext.Load(listItems);
            clientContext.ExecuteQuery();

            foreach (ListItem listItem in listItems)
            {
              each lisItem has children/items , how to get them?!

            }
4

3 に答える 3

12

私は答えを見つけました、ヘルパーに感謝します...:) Itemsは私が作成した私のオブジェクトです。「folderServerRelativeUrl」値を取得するには (string)listItem ["FileRef"]、foreachの上からフォルダーを確認したときに取得できます。

  public Items GetFolderItems(string folderServerRelativeUrl, List list, ClientContext clientContext)
        {
            try
            {
                var result = new Items();  <-- my class
                var query = new CamlQuery();

                query.FolderServerRelativeUrl = folderServerRelativeUrl;

                query.ViewXml = "<View Scope=\"RecursiveAll\"> " +
                    "<Query>" +
                    "<Where>" +
                                "<Eq>" +
                                    "<FieldRef Name=\"FileDirRef\" />" +
                                    "<Value Type=\"Text\">" + folderServerRelativeUrl + "</Value>" +
                                 "</Eq>" +
                    "</Where>" +
                    "</Query>" +
                    "</View>";

                var folderItems = list.GetItems(query);
                clientContext.Load(folderItems);
                clientContext.ExecuteQuery();

                foreach (ListItem item in folderItems)
                {
                    // item[ "..." ];
                }

                return result;
            }
            catch (Exception)
            {
                return null;
            }
        }
于 2012-02-20T10:56:25.897 に答える
3

リスト フォルダーのすべてのアイテムを取得する別の方法:

camlQuery.ViewXml = @"<View Scope='RecursiveAll'>
                         <Query>
                            <Where>
                                <Eq>
                                   <FieldRef Name='FSObjType' />
                                   <Value Type='int'>0</Value>
                                 </Eq>
                             </Where>
                          </Query>
                       </View>";
于 2015-07-22T10:16:56.773 に答える
1

この素晴らしい答えをありがとう。folderServerRelativeUrl 変数はルート URL から取得する必要があることをお知らせします (.xml を除くhttp://server)。ドキュメントセンター内に「ベンダー」という名前のリストがありました。つまり、siteUrl はhttp://server/documentcenter、リスト名は Vendors です。「/documentcenter/Vendors/...」を folderServerRelativeUrl として渡す必要がありました。しかし、それは問題ありません。今でも感謝しています。

Stack Overflow の皆さん、彼の回答の下にコメントを追加できなかったのはとても悲しいことです。このコメントを回答として提出する必要がありました。これを別の方法で行うことができれば、私を助けてください。彼の答えを編集したくありません。

〜シャルミン

于 2013-01-29T17:24:52.460 に答える