0

選択したすべてのリスト項目を他の (カスタム) リストにコピーするスクリプトが必要です。ドキュメントの良い解決策を見つけました:

var context = SP.ClientContext.get_current();
var web = context.get_web();
context.load(web);

var _destinationlib = web.get_lists().getByTitle('DestinationLibrary');
context.load(_destinationlib);
var notifyId;
var currentlibid = SP.ListOperation.Selection.getSelectedList();

var currentLib = web.get_lists().getById(currentlibid);

var selectedItems = SP.ListOperation.Selection.getSelectedItems(context);
var count = CountDictionary(selectedItems);

for(var i in selectedItems)
{
 alert('Now copying ' + i);
 var currentItem =    currentLib.getItemById(selectedItems[i].id);
 context.load(currentItem);

var File = currentItem.get_file();
context.load(File);

//Excecuting executeQueryAsync to get the loaded values
context.executeQueryAsync
(
function (sender, args) {
if(File != null) {

var _destinationlibUrl =  web.get_serverRelativeUrl() + _destinationlib.get_title() + '/' +  File.get_name();

File.copyTo(_destinationlibUrl, true);
notifyId = SP.UI.Notify.addNotification('Moving file…' + File.get_serverRelativeUrl() + 'to' + _destinationlibUrl, true);

//Excecuting executeQueryAsync to copy the file
context.executeQueryAsync(
function (sender, args) {
SP.UI.Notify.removeNotification(notifyId);

SP.UI.Notify.addNotification('File copied successfully', false);
},
function (sender, args) {
SP.UI.Notify.addNotification('Error copying file', false);
SP.UI.Notify.removeNotification(notifyId);
showError(args.get_message());
});
}
},
function (sender, args) {
alert('Error occured' + args.get_message());
}
);
}

通常のリスト項目で機能させるために何を変更する必要があるかわかりません。交換してみた

var File = currentItem.get_file();

context.load(File);

var title = currentItem.get_Title();
context.load(title);

var number = currentItem.get_item('number');
context.load(number);

しかし、それは機能しません。誰かが私に何をしなければならないかのヒントを与えることができれば、それは素晴らしいことです.

多くのthx

ファビュラス

4

1 に答える 1

1

上記のコードはhereから取得したようです。

注意深くなるようにしてください。このコードは、選択したファイル (リスト アイテムではありません!) を別のドキュメント ライブラリにコピーします。

必要に応じて、独自のソリューションをコーディングしてみてください。詳細については、 SharePoint JavaScript クラス ライブラリを参照してください。次の 2 つのアーキテクチャを使用できます。

  1. JavaScript からすべての作業を行います。そして、最初のステップはSP.List の addItem メソッドです
  2. JavaScript でクライアント上で選択の処理を行い、アイテムのコピー (初期リストから既存のアイテムの新しいリストにコピーを作成する) のために、カスタムのサーバー側コンポーネント (アプリケーション ページの場合もあります) を呼び出します。たとえば、これを参照してください。

また、context.load にも注意してください。次のコードはすべて context.executeQueryAsync に記述することをお勧めします。FF では Firebug を使用し、Chrome では開発者ツールを使用してコードをデバッグし、問題を見つけます。

于 2012-06-26T15:18:08.613 に答える