如何获取编辑的所有行?
我有以下jqgird,用户可以编辑所有记录的复选框.
单击“保存”按钮时,我需要知道编辑的所有记录是什么,我是jquery和jqgrid的新手.
谁能帮我 ?
这是jqgrid和html使用:
var customerCodesView = {};
customerCodesView.customerCodesView = function() {
$jq("#customerCodesTable").jqGrid(
{
colNames : ['Cust #','Customer Name','1','2','3','4','5','6','7','8','9','10','11','12','13','-1'],colModel : [{name : 'customerNumber',index : 'baseCustomerNumber',width : 55,align :'center'},{name : 'customerName',index : 'storeName',width : 100,sorttype :'text',{name : 'creditCodesPermissions.1',index : 'codeOne',width : 40,align : "center",editable:true,edittype:'checkBox',editoptions: { value:"True:False"},formatter: "checkBox",formatoptions: {disabled : false}},{name : 'creditCodesPermissions.2',index : 'codeTwo',{name : 'creditCodesPermissions.3',index : 'codeThree',{name : 'creditCodesPermissions.4',index : 'codeFour',{name : 'creditCodesPermissions.5',index : 'codeFive',{name : 'creditCodesPermissions.6',index : 'codeSix',{name : 'creditCodesPermissions.7',index : 'codeSeven',{name : 'creditCodesPermissions.8',index : 'codeEight',{name : 'creditCodesPermissions.9',index : 'codeNine',{name : 'creditCodesPermissions.10',index : 'codeTen',{name : 'creditCodesPermissions.11',index : 'codeEleven',{name : 'creditCodesPermissions.12',index : 'codeTwelve',{name : 'creditCodesPermissions.13',index : 'codeThirteen',{name : 'creditCodesPermissions.-1',index : 'codeMinusOne',formatoptions: {disabled : false}}
],pager : '#customerCodesTablePager',rowNum : 1000,loadOnce:true,sortorder : "desc",viewrecords : true,gridview : true,autowidth : true,multiselect : true,jsonReader : {
repeatitems : false,root : function(obj) {
return obj;
},page : function(obj) {
return 1;
},total : function(obj) {
return 1;
},records : function(obj) {
return obj.length;
}
},sortable : true,caption : "Credit Codes"
});
$jq("form#customerCodesForm").submit(
function() {
var newUrl = resourceURL+"&action=searchCreditCodes&"+ $jq(this).serialize();
$jq("#customerCodesTable").jqGrid("setGridParam",{"url" : newUrl,datatype : "json"}).trigger("reloadGrid");
return false;
});
$jq(".submit").button( {
icons : {
primary : 'ui-icon-circle-zoomin'
}
});
$jq("#customerCodesTableSave").click(function() {
var id = $jq("#customerCodesTable").jqGrid('getGridParam','selarrow');
alert("save");
if (id) {
var rowdata = $jq("#customerCodesTable").jqGrid('getRowData',id);
var postData = JSON.stringify(rowdata);
alert("postdata"+postData);
}
saveGrid();
});
function saveGrid() {
alert("saveGrid");
var saveCollection = [];
//Collect all rows in editmode,the rows to be saved.
$.each($jq("#customerCodesTable").getDataIDs(),function (index,id) {
var row = grid.getInd(id,true);
if (row !== false) {
if ($(row).attr('editable') === '1') {
saveCollection.push(id);
}
}
});
alert(""+saveCollection.toString() + "length" + saveCollection.length );
}
};
HTML:
更新:@Justin感谢您的输入,我是JQuery的新手,但总是很好的把事情弄清楚:) jqGrid中的数据第一次没有填充,它将是空的.有一个搜索输入框输入客户编号,在用户点击“开始”按钮后,我正在进行ajax调用以填充jqgrid中的json数据,数据看起来像这样[{“customerNumber”:“64093”,“ customerName“:”#9735 WATSONTOWN BILO“,”creditCodesPermissions.1“:”True“,”creditCodesPermissions.2“:”True“,”creditCodesPermissions.3“:”False“,”creditCodesPermissions.4“:”True“,“creditCodesPermissions.5”: “真”,“creditCodesPermissions.6”: “真”,“creditCodesPermissions.7”: “真”,“creditCodesPermissions.8”: “真”,“creditCodesPermissions.9”: “假”,“creditCodesPermissions.10”: “假”,“creditCodesPermissions.11”: “真”,“creditCodesPermissions.12”: “真”,“creditCodesPermissions.13”: “真”,“creditCodesPermissions.-1”: “真” }],我不知道如何使用jsonmap这种输出,我会试着弄明白.我会尝试你提到的“celledit”选项.感谢您的时间和帮助.@H_502_25@
最佳答案@H_502_25@
从您发布的填充网格包含的代码中不清楚.您没有定义任何数据类型,因此将使用默认值数据类型:’xml’,并且jqGrid将尝试从您未定义的URL和每个ajax加载XML数据,并将使用默认URL:“”.因此jqGrid将尝试从您的服务器加载XML数据.我不确定这是否是你想要的.因为您使用jsonReader,所以您可能计划使用数据类型:’json’.如果您将测试输入数据包含在您的问题中,它将清除许多内容.
下一个问题.您在colModel的’name’属性中使用特殊字符(‘creditCodesPermissions.7’或甚至’creditCodesPermissions.-1’),这是不允许的.根据您计划填充数据的方式,您可以使用具有这些点的jsonpmap或xmlmap,但只有在真正需要时才能执行此操作,并且您无法更改XML / JSON数据的格式.无论如何,您需要将colModel的’name’属性更改为’creditCodesPermissions7’之类的值.你不应该使用任何元字符(例如!“#$%&'()*,./:;< =>?@ [] ^`{|}〜)作为名称的文字部分,因为名称将用于构造一些网格元素的ID.
另外我建议你使用column templates.你应该只定义一个像这样的对象
var myCheckBoxTemplate = {
width: 40,align: "center",editable: true,edittype: 'checkBox',editoptions: { value: "True:False"},formatoptions: {disabled : false}
};
那么colModel里面的列的定义可能就像
{name: 'creditCodesPermissions1',index: 'codeOne',template: myCheckBoxTemplate}
它会简化你的jqGrid.
还有一个小小的评论:没有loadOnce:true参数.只有loadonce:true. loadOnce:true参数将被忽略.
要回答您的主要问题,首先需要了解如何填充网格数据.无论如何,我建议您使用三种标准编辑模式中的任何一种:内联编辑,表单编辑的单元格编辑.在你的情况下,内联编辑或cell editing可能会更好.在使用cell editing的情况下,“脏单元”类将被添加到单元元素(< td>元素),并且“已编辑”类将被添加到网格行(< tr>元素).因此,您可以使用该事实来检测用户更改哪些行的单元格.@H_502_25@
原文链接:https://www.f2er.com/jquery/427974.html