我有一个 jqGrid,我在其中向 colmodel 发送一个名为“设备”的特定属性的字符串值。只要值在网格上完美显示,一切都很好。我还添加了一个添加和编辑按钮,一切都很好,工作正常,表单按预期显示。(原谅这篇明显长的帖子,但它非常容易理解)
我在添加表单上修改了名为设备的字段,并像这样注入了我自己的多项选择
模型
{name:'equipments',index:'equipments', width:6, editable:true, edittype:'custom',
editoptions:{
custom_element:function(){
return $('<div id="mytrensferselect"><div class="transfer"><select id="select1" multiple="multiple"></select><a href="#" id="addbutton">add</a></div><div class="transfer"><select id="select2" multiple="multiple"></select><a href="#" id="removebutton">remove</a></div></div>');
},
custom_value:function(ele){
return ele.val();
}
}
}
添加按钮 - beforeShowForm 选项
bSubmit: "Save and New",
bCancel: "Cancel",
beforeShowForm: function(form) {
$.get('<c:url value="/moduleinstances/retrieveequipments?miId="/>' , function(data){ //load in my list of equipments as json string
var obj = jQuery.parseJSON(data); //parse the resulting json in order to populate select1 and select2
$("#select1").html(obj.remaining);
$("#equipments").removeAttr("name").removeAttr("id").removeClass("customelement");
$("#select2").html(obj.owning).attr("name","equipments").attr("id","equipments").addClass("customelement");
$('#addbutton').click(function() {
return !$('#select1 option:selected').remove().appendTo('#equipments');
});
$('#removebutton').click(function() {
return !$('#equipments option:selected').remove().appendTo('#select1');
});
}); //End AJAX CALL abd CUSTOM Transfer Select logic
//Start Logic For Custom Save and Close Button
$('<a href="#">Save and Close<span class="ui-icon ui-icon-disk"></span></a>').click(function() {
if($.isNumeric($(form.selector+" #rateOfPay").val())){
$.post('<c:url value="/moduleinstances/create/${courseModule.id}"/>', $('#FrmGrid_list2').serialize() , function(data){
$('#list2').trigger("reloadGrid");
$("#cData").trigger('click');
});
}else{
alert("Pay Rate must be numeric");
}
}).addClass("fm-button ui-state-default ui-corner-all fm-button-icon-left")
.prependTo("#Act_Buttons>td.EditButton");
$('#title').attr('value','${courseModule.name}');
$("#leadLecturer").val( '${lecturer.id}' );
}
这是我添加表单的相关部分。
当我单击保存和新建时,该功能工作正常,这是我通过bSubmit: "Save and New"
上面取消清除的提交按钮。这方面的邮政数据显示在您的左侧。当我单击Save and close
作为我的自定义按钮的按钮时。帖子数据显示在您的右侧。
Save and Close 使用 jquery 像这样序列化整个表单$('#FrmGrid_list2').serialize()
,这就是它变得毛茸茸的地方。
如果我们查看在这两种情况下发布的设备内容,我们可以看到名称差异。似乎 jqGrid 足够智能,可以计算出它的一组值,而 jquery serialize() 并没有按照我想要的方式进行。我正在使用 Spring MVC 3.0,这是我的设备数据执行操作的地方。
@RequestMapping(value = "update", method = RequestMethod.POST)
public @ResponseBody String update(Model uiModel,
@RequestParam("id") Long mId,
@RequestParam("campus") Long cId,
@RequestParam("leadLecturer") Long lId,//This is actually a Person ID.
@RequestParam("semesterStartDate") @org.springframework.format.annotation.DateTimeFormat(pattern = "MMMM dd, yyyy") java.util.Calendar semesterstartdate,
@RequestParam("semesterEndDate") @org.springframework.format.annotation.DateTimeFormat(pattern = "MMMM dd, yyyy") java.util.Calendar semesterenddate,
@RequestParam("tuitionStartDate") @org.springframework.format.annotation.DateTimeFormat(pattern = "MMMM dd, yyyy") java.util.Calendar tuitionstartdate,
@RequestParam("tuitionEndDate") @org.springframework.format.annotation.DateTimeFormat(pattern = "MMMM dd, yyyy") java.util.Calendar tuitionenddate,
@RequestParam("rateOfPay") Double rateOfPay,
@RequestParam("equipments[]") ArrayList<String> equipments,
HttpServletRequest httpServletRequest) { Bla...bla...bla }
看看最后一个@RequestParam,Spring能够处理项目数组,但是当它使用jQuery序列化发布时,动作找不到名为“设备[] ”的参数我在这里看到了一个关于这个的链接,我可以简单地这样做吗?
有任何想法吗