jqgrid在添加和编辑时的不同编辑规则

时间:2011-05-23 09:05:32

标签: jquery jqgrid

我有一个用于编辑用户的网格(权限,名称等) 我还有一个密码字段,在编辑模式下,它是只写的 含义 - 不显示密码,但如果用户为此字段插入值,则密码会更改 我的问题是,在编辑现有用户时,我显然希望密码字段是可选的。但是在添加新用户时,我想要使这个字段成为必需 如何实现这一目标? 谢谢

5 个答案:

答案 0 :(得分:2)

对于您的问题,您可以在编辑和添加时使用不同的验证方法。

例如:

function validate_add(posdata, obj)
{
   if(posdata.PASSWORD==null || posdata.PASSWORD=="" || posdata.PASSWORD==undefined)
    return [false, "Please enter the pasword"];

return [true, ""]; }

function validate_edit(posdata, obj) { //you can ignore this because you dont want to verify password }

// in jqgrid

grid.navGrid('#pager',{add:true,addtext:'Add',edit:true,edittext:'Edit',del:true,deltext:'Del', search:true,searchtext:'Find',refresh:true}, //options {width:700,reloadAfterSubmit:true, beforeSubmit:validate_edit}, // edit options {width:700,reloadAfterSubmit:true, beforeSubmit:validate_add}, // add options {}, //del options {} //search options );

答案 1 :(得分:2)

我为此

使用方法“setColProp”
......
{ //Edit dialog options
beforeCheckValues: function(postdata, formid, mode) {
  grid.setColProp('Password', {editrules: {required: false}}); 
},
{ //Add dialog options
beforeCheckValues: function(postdata, formid, mode) {
  grid.setColProp('Password', {editrules: {required: true}}); 
}

答案 2 :(得分:1)

Sandeep发布了正确的代码,因为beforeSubmit可用于自定义验证。

有另一种方法可以做你想做的事。一个人不能定义不同的editrules,但是可以更改beforeCheckValues方法中的editrules个对象的值,例如或者调用其他form edit events内部的editrules个对象的值之前验证检查。

以下是可以更改var grid = $("#list"), getColumnIndexByName = function(columnName) { var cm = grid.jqGrid('getGridParam','colModel'), // grid[0].p.colModel i=0, l=cm.length; for (; i<l; i++) { if (cm[i].name===columnName) { return i; // return the index } } return -1; }, addEditrulesPassword={required:true /*some other settings can follow*/}, editEditrulesPassword={required:false /*some other settings can follow*/}; // ... first of all we define the grid grid.jqGrid({ // all parameters including the definition of the column // with the name 'Password' inside of `colModel` }); grid.jqGrid( 'navGrid','#pager',{/*navGrid options*/}, {//Edit dialog options }, {//Add dialog options beforeCheckValues:function(postdata,$form,oper) { // get reference to the item of colModel which correspond // to the column 'Password' which we want to change var cm = grid[0].p.colModel[getColumnIndexByName('Password')]; cm.editrules = addEditrulesPassword; }, onclickSubmit:function(ge,postdata) { // get reference to the item of colModel which correspond // to the column 'Password' which we want to change var cm = grid[0].p.colModel[getColumnIndexByName('Password')]; cm.editrules = editEditrulesPassword; } } );

的代码架构
{{1}}

答案 3 :(得分:0)

我发现有点内联编辑的解决方案:

function inlineCustomValidation(value, colname) {

        var savedRow = jQuery("#grid").getGridParam("savedRow");

        if (savedRow[0].some_required_field == "")

            //add operation validation

        } else {

           //edit operation validation

        }
    };

savedRow数组。这是一个只读属性,在编辑行或单元格之前用于内联和单元格编辑模块来存储数据。请参阅单元格编辑和内联编辑。

答案 4 :(得分:0)

以下脚本是验证jqgrid内联编辑单元格,它不允许用户输入除用于指定小数点分隔符的点(。)之外的任何特殊字符

item