jqGrid动态更改特定行的edittype

jqGrid动态更改特定行的edittype,jqgrid,cell,Jqgrid,Cell,在这之后,我找到了一些我想得到的方法,我遇到了一些麻烦。 这是我的密码: var myDlg=$(“#dlgpers”),lastsel; myDlg.jqGrid({ url:'pers.php?id='+dataRow.id, mtype:'GET', 数据类型:“json”, ajaxGridOptions:{cache:false}, 身高:250, cmTemplate:{sortable:false}, gridview:没错, 是的, 卷轴:错, colNames:['Id'、'L

在这之后,我找到了一些我想得到的方法,我遇到了一些麻烦。 这是我的密码:

var myDlg=$(“#dlgpers”),lastsel;
myDlg.jqGrid({
url:'pers.php?id='+dataRow.id,
mtype:'GET',
数据类型:“json”,
ajaxGridOptions:{cache:false},
身高:250,
cmTemplate:{sortable:false},
gridview:没错,
是的,
卷轴:错,
colNames:['Id'、'Label'、'Information'、'Type'、'Data'],
colModel:[
{name:'id',index:'id',hidden:true,key:true},
{名称:'label',索引:'label',对齐:'right',宽度:100,可编辑:false,
cellattr:函数(rowId、val、rawObject、cm、rdata){
返回'style=“font-weight:bold;右侧边距:5px;左侧边框:0;顶部边框:0;'class=“ui状态处于活动状态”';
}
},
{名称:'info',索引:'info',宽度:200,可编辑:true,编辑类型:'text'},
{名称:'type',索引:'type',宽度:30,隐藏:true},
{名称:'data',索引:'data',宽度:30,隐藏:true}
],
loadComplete:函数(){
var rowIds=myDlg.jqGrid('getdataid');
$.each(行ID,函数(i,行){
var rowData=myDlg.jqGrid('getRowData',row);
如果(rowData.type=='select'){
myDlg.jqGrid('restoreRow',row);
var cm=myDlg.jqGrid('getColProp','info');
cm.edittype='select';
cm.editoptions={value:rowData.data};
myDlg.jqGrid('editRow',row);
cm.edittype='text';
cm.editoptions=null;
cm.editable=true;
}否则{
myDlg.jqGrid('restoreRow',row);
var cm=myDlg.jqGrid('getColProp','info');
cm.edittype='text';
cm.editoptions=null;
cm.editable=true;
myDlg.jqGrid('editRow',row);
cm.edittype='text';
cm.editoptions=null;
cm.editable=true;
}
});
}
});
结果如图所示:

以及JSON响应:

{“页面”:1,“总计”:1,“记录”:1,“行”:[
{“单元格”:[0,“Nom”,“LEBRUN”,“text”,““”]},
{“单元格”:[1,“Pr\u00e9nom”,“Jacques”,“text”,““”],
{“单元格”:[2,“首字母缩写”,“LJ”,“文本”,“']},
{“单元格”:[3,“函数”、“”、“文本”、“”]},
{“cell”[4,“Service”,Administratif,“select”,“0:Administratif;1:Commercial;2:Magasin;3:M\u00e9canique;4:Rejointage;5:Soudure;6:Tests”],
{“cell”:[5,“T\u00e9l\u00e9phone”、“”、“text”、“”]},
{“单元格”:[6,“电子邮件”、“”、“文本”、“”]},
{“cell”:[7,“Statut”,“CDI”,“select”,“0:CDI;1:CDD;2:App;3:Stg;4:Int”],
{“cell”:[8,“Entr\u00e9 le”,“2008-10-06”,“text”,“]},
{“cell”:[9,“Sorti le”,“0000-00-00”,“text”,“]}]
据你所知,我提出两个问题:

  • 如您所见,第二行(Prénom)似乎不可编辑,但它是可编辑的
  • 我不明白为什么这些输入是可见的,因为我希望它们只有在编辑某些单元格时才会出现
  • 非常感谢您的帮助,帮助我解决(并解释)我的错误。 吉赫尔

    更新日期2013-03-29

    我已经应用了你的答案代码,运行良好!非常感谢。 但我为另一个主题以这种方式创造了另一种形式,这给我带来了一些麻烦

    以下是此新表格的代码:

            var showAbs=function(){
            $('#EditDialog').empty();
            var $table=$('<table></table>')
            .attr('id','dlgcong')
            .appendTo($('#EditDialog'));
            var myCong = $("#dlgcong");
            myCong.jqGrid({
                url:'xpabs.php?id='+id+'&y='+y,
                datatype: "json",
                height:"auto",
                cmTemplate: {sortable:false},
                gridview: true,
                colNames:['Type absence','Début','Fin','id'],
                colModel:[ 
                    {name:'abs',index:'abs',width:155,editable:true,edittype:'select',
                        editoptions:{ 
                            dataUrl:"selabs.php", 
                        dataEvents: [
                                {
                                    type: 'change',
                                    fn: function(e) {
                                        $(this).parent().css('background-color','#'+$(this).find('option:selected').attr('colr'));
                                        if($(this).find('option:selected').attr('colr')=='ffffff'){
                                            $(this).parent().parent().find('input').datepicker('disable');
                                        }else{
                                            $(this).parent().parent().find('input').datepicker('enable');
                                            $(this).parent().parent().attr('changed',true);
                                        }
                                    }
                                }
                            ]
                        },
                        cellattr: function (rowId, val, rawObject, cm, rdata) {
                            return ' style="background-color:#'+rawObject[4]+';color:white;"';
                        }
                    },
                    {name:'debut',index:'debut',align:'center',width:70,editable:true},
                    {name:'fin',index:'fin',align:'center',width:70,editable:true},
                    {name:'id',index:'id',hidden:true}
                ],
                jsonReader: {
                    cell: "", 
                    root: function (obj) { 
                        return obj; 
                    } 
                },                  
                loadComplete: function (data) {
                    var $self = $(this),
                            cm = $self.jqGrid("getColProp", "debut"),
                            idPrefix = $self.jqGrid("getGridParam", "idPrefix"),
                            l = data.length,
                            i,
                            item;
                    for (i = 0; i < l; i++) {
                        item = data[i];
                        cm.editoptions = {
                            dataInit: function(element) {
                                $(element).datepicker({
                                    setDate:item[1],
                                    minDate:'01/01/'+y,
                                    maxDate:'31/12/'+y,
                                    onSelect: function( selectedDate,inst ) {
                                        $(element).val(selectedDate );
                                        $(element).parent().parent().attr('changed',true);
                                    }
                                })
                            }
                        }
                    }
                    var cm = $self.jqGrid("getColProp", "fin");
                    for (i = 0; i < l; i++) {
                        item = data[i];
                        cm.editoptions = {
                            dataInit: function(element) {
                                $(element).datepicker({
                                    setDate:item[2],
                                    minDate:'01/01/'+y,
                                    maxDate:'31/12/'+y,
                                    onSelect: function( selectedDate,inst ) {
                                        $(element).val(selectedDate );
                                        $(element).parent().parent().attr('changed',true);
                                    }
                                })
                            }
                        }
                        $self.jqGrid("editRow", idPrefix + item[3]);
                    }
                    myCong.find('select').each(function(){
                        $(this).css({
                            backgroundColor:'transparent',
                            color:'white',
                            border:0,
                            width:155
                        });
                    });
                },
                idPrefix: "cong",
                rowNum: 10000   
            });
            //********************
            //  Button ' Valider '
            //********************
            $('<input />')
            .attr({
                type:'button',          
            })
            .css({
                float:'right',
                marginTop:'5px'
            })
            .click(function(){
                var toBeSaved='';
                myCong.find('tr[changed=true]').each(function(idx){
                    if(toBeSaved.length>0){
                        toBeSaved+='|';
                    }
                    toBeSaved+=$(this).find('td:eq(3)').text()+';';
                    toBeSaved+=$(this).find('select option:selected').val()+';';
                    toBeSaved+=$(this).find('input:eq(0)').val()+';';
                    toBeSaved+=$(this).find('input:eq(1)').val();
                });
                if(toBeSaved.length>0){
                    $.ajax({
                        url:'majpabs.php?id='+id+'&data='+toBeSaved,
                        async:false,
                        dataType:'json',
                        success:function(data){
                            myGrid.trigger('reloadGrid');
                            $('#newAbs').val(' Nouveau ').attr('disabled',false);
                        }
                    });
                }
            })
            .val(' Valider les absences ')
            .appendTo($('#EditDialog'));
            //*******************
            //  Button ' Retour '
            //*******************
            $('<input />')
            .attr({
                type:'button',
                id:'newAbs'
            })
            .css({
                float:'left',
                marginTop:'5px'
            })
            .click(function(){
                showPers();
            })
            .val(' Retour ')
            .appendTo($('#EditDialog'));
            //********************
            //  Button ' Nouveau '
            //********************
            $('<input />')
            .attr({
                type:'button',
                disabled:false
            })
            .css({
                float:'left',
                marginTop:'5px',
                marginLeft:'7px'
            })
            .click(function(){
                if($(this).val()==' Nouveau '){
                    var myRow = {abs:"0", debut:'00/00/'+y, fin:'00/00/'+y, id:'0'};
                    myCong.jqGrid('addRowData','',myRow, 'last');
                    $(this).val(' Sauver ').attr('disabled',true);
                }else{
                }
            })
            .val(' Nouveau ')
            .appendTo($('#EditDialog'));
        }
    
    var showAbs=function(){
    $('#EditDialog').empty();
    变量$table=$('')
    .attr('id','dlgcong')
    .appendTo($('EditDialog');
    var myCong=$(“#dlgcong”);
    myCong.jqGrid({
    url:'xpabs.php?id='+id+'&y='+y,
    数据类型:“json”,
    高度:“自动”,
    cmTemplate:{sortable:false},
    gridview:没错,
    colNames:['Type缺席','Début','Fin','id'],
    colModel:[
    {名称:'abs',索引:'abs',宽度:155,可编辑:true,编辑类型:'select',
    编辑选项:{
    dataUrl:“selabs.php”,
    数据事件:[
    {
    键入:“更改”,
    fn:功能(e){
    $(this.parent().css('background-color','#'+$(this.find('option:selected')).attr('colr');
    if($(this).find('option:selected').attr('colr')=='ffffff'){
    $(this).parent().parent().find('input').datepicker('disable');
    }否则{
    $(this).parent().parent().find('input').datepicker('enable');
    $(this.parent().parent().attr('changed',true);
    }
    }
    }
    ]
    },
    cellattr:函数(rowId、val、rawObject、cm、rdata){
    return'style=“background color:#”+rawObject[4]+';color:white;“;
    }
    },
    {名称:'dunch',索引:'dunch',对齐:'center',宽度:70,可编辑:true},
    {名称:'fin',索引:'fin',对齐:'center',宽度:70,可编辑:true},
    {name:'id',index:'id',hidden:true}
    ],
    jsonReader:{
    单元格:“”,
    根:函数(obj){
    返回obj;
    } 
    },                  
    loadComplete:函数(数据){
    var$self=$(此),
    cm=$self.jqGrid(“getColProp”,“首次亮相”),
    idPrefix=$self.jqGrid(“getGridParam”、“idPrefix”),
    l=数据长度,
    我
    项目;
    对于(i=0;i                loadComplete: function (data) {
                    var $self = $(this),
                            idPrefix = $self.jqGrid("getGridParam", "idPrefix"),
                            l = data.length,
                            i,
                            item,
                            cm;
                    for (i = 0; i < l; i++) {
                        item = data[i];
                        cm = $self.jqGrid("getColProp", "debut");
                        cm.editoptions = {
                            dataInit: function(element) {
                                //alert('deb'+i);
                                $(element).datepicker({
                                    setDate:item[1],
                                    minDate:'01/01/'+y,
                                    maxDate:'31/12/'+y,
                                    onSelect: function( selectedDate,inst ) {
                                        $(element).val(selectedDate );
                                        $(element).parent().parent().attr('changed',true);
                                    }
                                })
                            }
                        };
                        $self.jqGrid("editRow", idPrefix + item[3]);
                        //
                        cm = $self.jqGrid("getColProp", "fin");
                        cm.editoptions = {
                            dataInit: function(element) {
                                //alert('fin'+i);
                                $(element).datepicker({
                                    setDate:item[2],
                                    minDate:'01/01/'+y,
                                    maxDate:'31/12/'+y,
                                    onSelect: function( selectedDate,inst ) {
                                        $(element).val(selectedDate );
                                        $(element).parent().parent().attr('changed',true);
                                    }
                                })
                            }
                        };
                        $self.jqGrid("editRow", idPrefix + item[3]);
                    }
                    myCong.find('select').each(function(){
                        $(this).css({
                            backgroundColor:'transparent',
                            color:'white',
                            border:0,
                            width:155
                        });
                    });
                },