使用JavaScript在SharePoint 2010文档库中创建文档副本

时间:2011-10-04 01:00:19

标签: javascript sharepoint-2010 client

我想在SharePoint文档库中创建文档副本 基本上让我们假设有一个模板,每个用户都会通过点击它来打开文档。我想创建一个文件副本用户点击并打开该文件进行编辑 我尝试过使用JavaScript Client Object model of SharePoint。但这些示例用于操作列表项,但不用于文档库 任何人都可以指向我可以用来操纵文档库中文件的任何来源

一个限制是我需要使用JavaScript 对象模型 Web服务来实现此功能。即,服务器端代码

以下是我到目前为止的代码

  1. 我打算使用的方法是复制现有的文件对象
  2. 重命名并
  3. 将其保存到其他文档库
  4. 请忽略格式化,因为我无法正确执行此操作并且这是在开发代码

        <script type="text/javascript">
     var clientContext = null;
            var web = null;
            var meetingItems = null;
            var filePath = null;
            var file = null;
            debugger;
            ExecuteOrDelayUntilScriptLoaded(Initialize, "sp.js");
    
    
            function Initialize() {
                clientContext = new SP.ClientContext.get_current();
                web = clientContext.get_web();
    
                this.list = web.get_lists().getByTitle("Documents");
    
                clientContext.load(list, 'Title', 'Id');
                var queryStart = "<View>"+ "<Query>"+ "<Where>"+ "<Eq>"+ "<FieldRef Name='Title'/>" + "<Value Type='Text'>"; 
                        var queryEnd = "</Value>"+ "</Eq>"+ "</Where>"+ "</Query>"+ "</View>";
    
    camlQuery = new SP.CamlQuery(); 
    
    
    queryMeeting = queryStart + 'DevCookbook'+ queryEnd;
    
    camlQuery.set_viewXml(queryMeeting);
    
    meetingItems = list.getItems(camlQuery);
    clientContext.load(meetingItems);
    
                clientContext.executeQueryAsync(Function.createDelegate(this, this.onListLoadSuccess), Function.createDelegate(this, this.onQueryFailed));
            }
    
            function onListLoadSuccess(sender, args) {
            filePath = meetingItems.get_item(0).get_path();
            file = meetingItems.get_item(0);
            debugger;
            clientContext.load(file);
    
                clientContext.executeQueryAsync(Function.createDelegate(this, this.onFileLoadSuccess), Function.createDelegate(this, this.onFileFailed));
    
               // alert("List title : " + this.list.get_title() + "; List ID : " + this.list.get_id());
    
               // doclist();        
            }
    function doclist()
    {
    var path = file.get_title();
    path = meetingItems.get_item(0).get_file().get_title();
    }
            function onQueryFailed(sender, args) {
                alert('request failed ' + args.get_message() + '\n' + args.get_stackTrace());
            }
    
            function onFileLoadSuccess(sender, args) {
            debugger;
          alert("List title : " + this.list.get_title() + "; List ID : " + this.list.get_id());
    
    
            }
            function onFileFailed(sender, args) {
                alert('request failed ' + args.get_message() + '\n' + args.get_stackTrace());
            }
    
    
            </script>
    

1 个答案:

答案 0 :(得分:1)

我使用了复制web服务来完成这些功能 方法是对象模型和JavaScript函数的组合

  1. 从模板库中复制文件。
  2. 使用“CheckoutDocument”功能
  3. 签出文件
  4. 在后台添加元数据
  5. 使用

    显示编辑元数据弹出给用户

    var oDialog = {             url:“../ Library /Forms / Edit.aspx?ID =”+ itemID,             标题:“创建一个新文档”         }; SP.UI.ModalDialog.showModalDialog(oDialog)

  6. 用户输入文件后检查