Usuário com melhor resposta
Como Excluir Documentos de um Biblioteca Usando JavaScript?

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
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/- Editado André LageModerator terça-feira, 10 de abril de 2012 12:35
- Marcado como Resposta Fabian André GehrkeMicrosoft employee, Moderator quarta-feira, 23 de maio de 2012 20:42
-
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
- Marcado como Resposta Fabian André GehrkeMicrosoft employee, Moderator quarta-feira, 23 de maio de 2012 20:42
-
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/- Editado André LageModerator sexta-feira, 13 de abril de 2012 06:55
- Marcado como Resposta Fabian André GehrkeMicrosoft employee, Moderator quarta-feira, 23 de maio de 2012 20:42
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
- Marcado como Resposta Fabian André GehrkeMicrosoft employee, Moderator quarta-feira, 23 de maio de 2012 20:42
-
-
-
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...
-
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/- Editado André LageModerator terça-feira, 10 de abril de 2012 12:35
- Marcado como Resposta Fabian André GehrkeMicrosoft employee, Moderator quarta-feira, 23 de maio de 2012 20:42
-
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?
-
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/- Editado André LageModerator sexta-feira, 13 de abril de 2012 06:55
- Marcado como Resposta Fabian André GehrkeMicrosoft employee, Moderator quarta-feira, 23 de maio de 2012 20:42