0

私はこの問題の解決策をどこでも探しましたが、不足しています。誰かが私にトリックを教えてくれたら、私は素晴らしいだろう.

範囲: SharePoint Online 用の SharePoint アドインを構築しています。appweb では、web パーツを使用して、CSOM または JSOM を介して ListItem の ClientContext を取得しようとしています。サンドボックス ソリューションを使用できません。

主な目標: ListItem の本体を取得し、GetBytes を使用して、本体を zip または UTF8 でエンコードできるように、ClientContext が必要です。また、ユーザーが選択した複数の ListItems を選択するには、SP.ListOperation.Selected.getSelectedItems(clientContext) を使用する必要があります。

コード例 (完全ではありません):

 <script>
        SP.SOD.executeFunc('sp.js', 'SP.ClientContext', sharePointReady);

        function helloWorldTest() {
            alert("Function helloWorldTest Active");
            var listURL = '/sites/dev/';
            var clientContext = new SP.ClientContext(listURL);
            var olist = clientContext.get_web().get_lists().getByTitle('Secure List')

            var currentLib = web.get_lists().getById(currentlibid); //Gets the current Library
            var selectedItems = SP.ListOperation.Selection.getSelectedItems(clientContext);
            for (var i in selectedItems) {
                var currentItem = currentLib.getItemById(selectedItems[i].id);
                context.load(currentItem);
                for (i in items) {
                    selItems += '|' + selectedItems[i].id;
                }


            }
        }


                /*
                var itemCreateInfo = new SP.ListItemCreationInformation();
                this.oListItem = oList.addItem(itemCreateInfo);

                oListItem.set_item('Title', 'Test');
                oListItem.set_item('Body', 'Hello World!');

                oListItem.update();

                clientContext.load(oListItem);

                clientContext.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceeded), Function.createDelegate(this, this.onQueryFailed));
                alert("fuction complete");
            }

            function onQuerySucceeded() {

                alert('Item created: ' + oListItem.get_id());
            }

            function onQueryFailed(sender, args) {

                alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace());
            }
        }
        */
    </script>

本当に助かります。ありがとうございました。

4

1 に答える 1

0

現在のサイトのクライアント コンテキストを取得しようとしている場合は、次を使用できます。

SP.ClientContext.get_current()

アプリ Web からホスト Web に到達するクライアント コンテキストを構築しようとしている場合は、ホスト Web の完全な URL を使用する必要があります。上記のコードでは、次のようにクライアント コンテキストを構築しているように見えます。

var listURL = '/sites/dev/';
var clientContext = new SP.ClientContext(listURL);

これは相対 URL であり、クライアント コンテキストの作成時には機能しません。通常、ホスト Web への URL は、SPHostUrl という名前のクエリ文字列パラメーターとして使用できるため、そこから取得する必要がある場合があります。また、 http://server/sites/dev/などのサイトのみの URL である必要があり、 http://server/sites/dev/default.aspxやサイト内のリソースへの別の URL のようなものではないことを知っておいてください。 .

于 2015-10-29T00:38:36.970 に答える