在项目开发过程中,我们经常遇到需要批量处理的情况,数据是动态的,所以在批量处理的时候最好是只处理改变的那个数据。
如上图,我们更改下拉框的选项,更改某条或者几条数据。
首先我们来看怎么嵌入下拉框:
动态下拉框的生成我们不再写,在第一行我们隐藏了一个<input>标签,这里我们就是通过改变数据,然后获取value来确定几条数据被改变。
function test() {
$("#t1>tbody>tr").each(function (i) {
$("#payment_terms_id" + i).change(function () {
$("#ss"+i).val("1");
})
$("#customer_type_id" + i).change(function () {
$("#ss"+i).val("1");
})
})
}
然后传入数据到后台时,我们取一个数组存放这些value
var paymentTerms = new Array();
$("#t1>tbody>tr").each(function (i) {
var customerID = $(this).data("customerid");
var paymentTermsID = $(this).find("td:eq(7) > select").val();
var customerTypeID = $(this).find("td:eq(6) > select").val();
if( $("#ss"+i).val() >0){
paymentTerms.push({
customerID: customerID,
"paymentTermsID": paymentTermsID,
"customerTypeID":customerTypeID
});
}
});
$.ajax({
url: "sh/customer_category/paymentTerms",
type: "post",
data: {"paymentTerms": JSON.stringify(paymentTerms)},
dataType: "json",
traditional: true,
beforeSend: function () {
openLoading();
},
转到controller层去处理:
@RequestMapping(value = "paymentTerms",method = RequestMethod.POST,produces = ResponseContentType.APPLICATION_JSON)
@ResponseBody
public ResponseResult updateCustomerPaymentTerms(String paymentTerms){
Gson gson = new Gson();
List<Customer> customers = gson.fromJson(paymentTerms, new TypeToken<List<Customer>>() {}.getType());
serviceImpl层
@Override
public int updateCustomerByPaymentTerms(List<Customer> customers) throws Exception {
int i = 0;
for (Customer s : customers) {
i += updateCustomer(s, null);
}
return i;
}
至此完成了批量处理的简单操作。