2014-09-04 52 views

回答

0

我改变了你的代码,所以它可以运行在JSBin

服务http://services.odata.org/V2/(S(2pxev2v2zqtidlzbqzhncots))/OData/OData.svc/Categories不支持对DELETE的批量请求。请参阅响应主体。如果你想要做多个删除,则可以使用ODataModel.remove

<?xml version="1.0" encoding="utf-8" standalone="yes"?> 
<error xmlns="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata"> 
    <code/> 
    <message xml:lang="en-US"> 
     Content is unexpected for the Delete operation.    
    </message> 
</error> 

也由一个发送多个DELETE问题之一submitBatch(fnSuccess?, fnError?, bAsync?),该文件表明:

{}功能fnSuccess?

  • 一个回调函数,当批处理请求成功发送时被调用。注:单批操作可能有错误。这些错误可以在回调处理程序中的aErrorResponses参数中访问。处理程序可以具有以下参数:oData,oResponse和aErrorResponses。

您必须在成功函数回调中检查参数aErrorResponses以查看是否发生了任何错误。请参阅以下内容来批量删除和检查错误响应。

var indices = oTable.getSelectedIndices(); 

if (indices.length == 0) { 
    alert("Please Select a row to Delete"); 
    return; 
} else { 
    alert("selected " + indices); 
    var batchChanges = []; 
    for (var i = 0; i < indices.length; i++) { 
     var selectedRow = oTable.getRows()[i]; 
     var selectedId = selectedRow.getCells()[0].getValue(); 
     var selectedName = selectedRow.getCells()[1].getValue(); 
     var del = m.createBatchOperation(
      "Categories(" + selectedId + ")", 
      "DELETE" 
     ); 
     batchChanges.push(del); 
    } 

    m.addBatchChangeOperations(batchChanges); 
    m.submitBatch(function(oData, oResponse, aErrorResponses) { 
     if (aErrorResponses.length > 0) { 
      alert(aErrorResponses[0].response.body); 
     } else { 
      m.refresh(); 
      m.clearBatch(); 
      alert("success"); 
     } 
    }, function(err) { 
     alert("error occured"); 
    }); 
} 
+0

嗨艾伦。是否有任何批量删除的例子。 – vicky 2014-09-04 14:31:59

+0

嗨vignesh,看到我更新的答案,我只是编辑代码来启用mutli选择表和批量删除时选择多行删除http://jsbin.com/wuweluyufulu/5/。 – Allen 2014-09-04 14:55:04

+0

嗨艾伦。你已经提到URL不支持删除操作,但通过使用chrome Advanced REST客户端和邮递员,我可以执行删除操作。 – vicky 2014-09-04 17:14:32