none
Como Excluir Documentos de um Biblioteca Usando JavaScript? RRS feed

  • Pergunta

  • Boa tarde galera,

    alguém sabe como faço para excluir um documento de uma biblioteca com javascript?

    Tentei usando esse código, mas não funcionou...

     function deleteListItem(id, lista) {
            var clientContext = SP.ClientContext.get_current();
            var oList = clientContext.get_web().get_lists().getByTitle(lista);
            this.oListItem = oList.getItemById(id);
            oListItem.deleteObject();
    }

    Obrigado,

    Att

    Julio Cezar


    quinta-feira, 5 de abril de 2012 18:00

Respostas

  • Julio,

    O codigo do Ivan deveria funcionar, faz o seguinte teste, adiciona a web Part HTML Form com o seguinte codigo.

    <script type="text/javascript">
    
     function deleteListItem(id, lista) {        
    
    var clientContext = SP.ClientContext.get_current();        
    var oList = clientContext.get_web().get_lists().getByTitle(lista);        this.oListItem = oList.getItemById(id);        
    
    oListItem.deleteObject();        
    clientContext.executeQueryAsync(Function.createDelegate(this, this.success), Function.createDelegate(this, this.failed));
    
    }  function success(sender, args) {
            alert('OK');
        }
        function failed(sender, args) {
            alert('falha:' + args.get_message() + '\n' + args.get_stackTrace());
        }
    </script>
    
    <input type="button" value="ApagarItem" onclick="deleteListItem('5', 'Contacts')"/></div>

    Teras que alterar o conteudo do metodo deletelistitem(5,contact) com o nome da lista e ID correcto, se continua a falhar, valida se o ficheiro sp.js foi adicionado na pagina correctamente "podes ver no code source da pagina html".

    Se o SP.JS for adicionado correctamente confirma que o codigo de javascript e executado antes do sp.js ser adicionado na pagina entao recomendo a seguinte recomendacao

    <script type="text/javascript">
    ExecuteOrDelayUntilScriptLoaded(deleteListItem, "sp.js");
     
     function deleteListItem(id, lista) {        
    
    var clientContext = SP.ClientContext.get_current();        
    var oList = clientContext.get_web().get_lists().getByTitle(lista);        this.oListItem = oList.getItemById(id);        
    
    oListItem.deleteObject();        
    clientContext.executeQueryAsync(Function.createDelegate(this, this.success), Function.createDelegate(this, this.failed));
    
    }  function success(sender, args) {
            alert('OK');
        }
        function failed(sender, args) {
            alert('falha:' + args.get_message() + '\n' + args.get_stackTrace());
        }
    </script>
    
    <input type="button" value="ApagarItem" onclick="deleteListItem('5', 'Contacts')"/></div>
    confirma "ExecuteOrDelayUntilScriptLoaded(deleteListItem, "sp.js");" e confirma se a pagina tem o ficheiro sp.js.

    André Lage Microsoft SharePoint, CRM Consultant
    Blog:http://aaclage.blogspot.com
    Codeplex:http://spupload.codeplex.com/http://simplecamlsearch.codeplex.com/


    terça-feira, 10 de abril de 2012 12:30
    Moderador
  • Julio, tente colocar depois da linha do deleteObject a chamada para o sync e duas funcoes extras para saber se deu certo ou errado:

     function deleteListItem(id, lista) {
           
    var clientContext = SP.ClientContext.get_current();
           
    var oList = clientContext.get_web().get_lists().getByTitle(lista);
           
    this.oListItem = oList.getItemById(id);
            oListItem
    .deleteObject();
    clientContext.executeQueryAsync(Function.createDelegate(this, this.success), Function.createDelegate(this, this.failed));

    }

    function sucess(sender, args) { alert('OK'); } function failed(sender, args) { alert('falha:' + args.get_message() + '\n' + args.get_stackTrace()); }



    Ivan Costa http://www.ivancosta.net @ivannw

    quinta-feira, 5 de abril de 2012 19:23
  • Interresante, realizei o teste no chrome e deu direito. tem o blobcache ligado?

    Clique diversas vezes 4,5 no botao ate ver se tem alguma resposta...

    Faza download do Fiddler http://www.fiddler2.com/fiddler2/version.asp e valide no trafico se os wcf sao chamados.


    André Lage Microsoft SharePoint, CRM Consultant
    Blog:http://aaclage.blogspot.com
    Codeplex:http://spupload.codeplex.com/http://simplecamlsearch.codeplex.com/


    sexta-feira, 13 de abril de 2012 06:55
    Moderador

Todas as Respostas

  • Julio, tente colocar depois da linha do deleteObject a chamada para o sync e duas funcoes extras para saber se deu certo ou errado:

     function deleteListItem(id, lista) {
           
    var clientContext = SP.ClientContext.get_current();
           
    var oList = clientContext.get_web().get_lists().getByTitle(lista);
           
    this.oListItem = oList.getItemById(id);
            oListItem
    .deleteObject();
    clientContext.executeQueryAsync(Function.createDelegate(this, this.success), Function.createDelegate(this, this.failed));

    }

    function sucess(sender, args) { alert('OK'); } function failed(sender, args) { alert('falha:' + args.get_message() + '\n' + args.get_stackTrace()); }



    Ivan Costa http://www.ivancosta.net @ivannw

    quinta-feira, 5 de abril de 2012 19:23
  • Obrigado Ivan, eu coloquei as funções mas ele não chamou nenhuma nas duas...
    segunda-feira, 9 de abril de 2012 19:07
  • Julio, consegue ver se ta acontecendo algum erro de javascript? usa o F12 do IE e habilita o debug de javascript.

    Ivan Costa http://www.ivancosta.net @ivannw

    segunda-feira, 9 de abril de 2012 19:11
  • Julio, consegue ver se ta acontecendo algum erro de javascript? usa o F12 do IE e habilita o debug de javascript.

    Ivan Costa http://www.ivancosta.net @ivannw

    Então Ivan, deu duas exceptions na hora de chamar essas duas funções...

    Sys.ArgumentUndefinedException: Value cannot be undefined.
    Parameter name: method

      'method' is null or not an object

    Só que o mais estranho é que no IE funcionou, meus documentos estão sendo excluídos...

    segunda-feira, 9 de abril de 2012 19:30
  • Julio,

    O codigo do Ivan deveria funcionar, faz o seguinte teste, adiciona a web Part HTML Form com o seguinte codigo.

    <script type="text/javascript">
    
     function deleteListItem(id, lista) {        
    
    var clientContext = SP.ClientContext.get_current();        
    var oList = clientContext.get_web().get_lists().getByTitle(lista);        this.oListItem = oList.getItemById(id);        
    
    oListItem.deleteObject();        
    clientContext.executeQueryAsync(Function.createDelegate(this, this.success), Function.createDelegate(this, this.failed));
    
    }  function success(sender, args) {
            alert('OK');
        }
        function failed(sender, args) {
            alert('falha:' + args.get_message() + '\n' + args.get_stackTrace());
        }
    </script>
    
    <input type="button" value="ApagarItem" onclick="deleteListItem('5', 'Contacts')"/></div>

    Teras que alterar o conteudo do metodo deletelistitem(5,contact) com o nome da lista e ID correcto, se continua a falhar, valida se o ficheiro sp.js foi adicionado na pagina correctamente "podes ver no code source da pagina html".

    Se o SP.JS for adicionado correctamente confirma que o codigo de javascript e executado antes do sp.js ser adicionado na pagina entao recomendo a seguinte recomendacao

    <script type="text/javascript">
    ExecuteOrDelayUntilScriptLoaded(deleteListItem, "sp.js");
     
     function deleteListItem(id, lista) {        
    
    var clientContext = SP.ClientContext.get_current();        
    var oList = clientContext.get_web().get_lists().getByTitle(lista);        this.oListItem = oList.getItemById(id);        
    
    oListItem.deleteObject();        
    clientContext.executeQueryAsync(Function.createDelegate(this, this.success), Function.createDelegate(this, this.failed));
    
    }  function success(sender, args) {
            alert('OK');
        }
        function failed(sender, args) {
            alert('falha:' + args.get_message() + '\n' + args.get_stackTrace());
        }
    </script>
    
    <input type="button" value="ApagarItem" onclick="deleteListItem('5', 'Contacts')"/></div>
    confirma "ExecuteOrDelayUntilScriptLoaded(deleteListItem, "sp.js");" e confirma se a pagina tem o ficheiro sp.js.

    André Lage Microsoft SharePoint, CRM Consultant
    Blog:http://aaclage.blogspot.com
    Codeplex:http://spupload.codeplex.com/http://simplecamlsearch.codeplex.com/


    terça-feira, 10 de abril de 2012 12:30
    Moderador
  • Então Andre, a função está funcionando, só que ela funciona apenas no IE, no Chrome os itens não são excluídos, e na hora de chamar a função de sucesso (Function.createDelegate), ele tb não chama. No IE o item é excluído e a função é chamada..

    Voces tem alguma ideia porque funciona em um, e em outro não?

    quinta-feira, 12 de abril de 2012 18:34
  • Interresante, realizei o teste no chrome e deu direito. tem o blobcache ligado?

    Clique diversas vezes 4,5 no botao ate ver se tem alguma resposta...

    Faza download do Fiddler http://www.fiddler2.com/fiddler2/version.asp e valide no trafico se os wcf sao chamados.


    André Lage Microsoft SharePoint, CRM Consultant
    Blog:http://aaclage.blogspot.com
    Codeplex:http://spupload.codeplex.com/http://simplecamlsearch.codeplex.com/


    sexta-feira, 13 de abril de 2012 06:55
    Moderador