$.extend($.fn.validatebox.defaults.rules, { //采购单位 cbbUnit: { validator: function (value, param) { var index = $(this).parents("td[field='caiunitId']").parent().attr("datagrid-row-index"); if (index == undefined) return; var _target = $(this).parents(".datagrid-view:first").children(".datagrid-f"); var row = $(_target).datagrid("getRows")[index]; var result = true; try { var tgCaiunit=$(_target).datagrid('getEditor', {'index':index,'field':'caiunitId'}).target; var caiunitData=tgCaiunit.combobox('getData'); if (value == "") { result = false; return; } } finally { if (result) { for(var i=0;i<caiunitData.length;i++) { if (tgCaiunit.combobox('getData')[i].dict == value) { row.caiunitId=tgCaiunit.combobox('getData')[i].did; row.caiunit = value; } } $(_target).datagrid("updateRow", {index: index, row: row}); } return result; } }, message: '单位选择有误!' }, //数量输入验证 numPNum: { validator: function (value, param) { if ($(this).hasClass("validatebox-readonly")) { return true; } var index = $(this).parents("td[field='pNum']").parent().attr("datagrid-row-index"); if (index == undefined) return; var _target = $(this).parents(".datagrid-view:first").children(".datagrid-f"); var row = $(_target).datagrid("getRows")[index]; var result = true; try { if (parseFloat(value) <= 0) { result = false; return; } } finally { if (result) { row.pNum = parseFloat(value).toFixed(4); $(_target).datagrid("updateRow", {index: index, row: row}); } return result; } }, message: '数据输入有误!' } });
$('#chaGrid').datagrid({ height: 200, columns: [[ {field: 'itemId', width: 150, align: 'center', id: 'itemId', hidden: 'true'}, {field: 'caiunit', hidden: 'true', id: 'caiunit', editor: {type: 'textbox', options: {editable: false}}}, { field: 'caiunitId', title: '单位', width: 60, align: 'center', id: 'caiunitId',formatter:function (val,row) { return row.caiunit; }, editor: { type: 'combobox', options: { valueField: 'did', textField: 'dict', editable: true, required: true, validType:"cbbUnit", } }, {field: 'pNum', title: '数量', width: 90, align: 'center', editor: { type: 'numberbox', options: { min: 1, validType: 'numPNum', precision: 4, required: true } } },