jqGrid.Отключение мультиселекта в режиме редактирования - PullRequest
0 голосов
/ 06 октября 2011

Я создаю новый jqgrid со следующими полями и функциями:

Идентификатор развертывания ',' Ветвь ',' Имя выпуска ',' Идентификатор клиента ',' Количество хостов ',' Комментарии ','Действия

-У меня есть опция множественного выбора на ИСТИНА.

-У меня есть действие редактирования / удаления в каждой строке

-У меня есть панель навигации внизу с опцией ДОБАВИТЬ / Поиск.

Мои действия: когда я добавляю новую запись, я могу добавить поле BRANCH и только комментарий (это работает). Когда я редактирую запись, я могу изменить только комментарий (это тоже работает)

Моя проблема связана с опцией MULTISELECT ...

Если я нажимаю на кнопку EDIT, а MULTISELECT снимает флажок, все работает нормально .. означает, что только COMMENT разрешено изменять.

, но

Если строка выбрана в столбце Multiselect, поле BRANCH становится редактируемым.

Кроме того, я хочу заблокировать другие действия, когда я редактирую одну конкретную строку (значит, не иметь возможности проверить / снять отметку EDIT /Удалить другие строки)

Может кто-нибудь помочь мне сделать тhat?

Спасибо

ps: я пытался с другим кодом / примерами, которые я нашел здесь, но безуспешно.Я не публикую это сейчас, чтобы избежать путаницы.

    var lastSel;
    $(function(){ 

 $("#list").jqGrid({

  data: mydata, 
  datatype: "local", 

  colNames:['Deployment id','Branch', 'Release Name','Client id','# of hosts','Comments','Actions'],
  colModel:[ 
      {name:'deployment_id',index:'deployment_id',align:"right", sorttype:"int", width:120},    
      {name:'branch',index:'branch',align:"center", formatter:branchColor,editable: true,edittype:"select",editrules:{required:true},editoptions:{value:"option 1:option1;option2:option2"}},           
      {name:'release_name',index:'release_name',align:"center"},    
      {name:'client_id',index:'client_id',align:"right", sorttype:"int", width:60}, 
      {name:'num_hosts',index:'num_hosts',align:"right", sorttype:"int", width:60},
      {name:'comments',index:'comments',align:"center", editable: true,edittype:"textarea", editoptions:{rows:"2",cols:"20"}},
      {name:'myac', width:80, fixed:true, sortable:false, resize:false, formatter:'actions',formatoptions:{keys:true}}  
  ],

         rowList : [20,30,50], 

         pager: '#pager', 
         sortname: 'deployment_id', 
         viewrecords: true,
         recordpos: 'right',      
         sortorder: "asc",
         sortable: true, 
       multiselect: true,
       shrinkToFit :true,
       viewrecords: true,


     onSelectRow: function(id){
        //alert("id:"+id);
        if (id == null) {
                         id = 0;
                                        if(id && id!==lastSel){

                                            //$('#list').jqGrid('restoreRow',lastSel);
                                            //$('#list').jqGrid('editRow',id,false);


                                            $("#jqg_list_" + id).attr("disabled","disabled");   
                                            lastSel=id;

                                        }
                    }
                    else {


                                var grId = $("#list").jqGrid('getGridParam','selrow');


    if(grId){
            $("#" + grId + "_branch").attr("disabled","disabled");
            $("#" + grId + "_branch").removeClass("editable");  
        }                                   

                    }                   
            },



}); 


// to modify The tool bar on bottom
$("#list").jqGrid('navGrid','#pager',{edit:false, edittitle: 'Modify a Deployment', 
                                         add:true, addtitle: 'Add a new Deployment',
                                         del:true, deltitle: 'Delete a Deployment',
                                         nav:{ addCaption: 'Columns'}
                                       },
{// edit option
 beforeShowForm: function(form) { 
                                   $('#branch', form).attr("disabled","disabled"); 

                                  },

//seems to be is not qworking   
 beforeSelectRow: function(rowid, e) { return false; },                               
 },

{// add option
 beforeShowForm: function(form) { 

                                    $('#branch option[value=""]', form).text('Select a branch')
                                    $('#branch option[value=""]', form).attr("selected", "selected");
                                    $('#branch', form).attr("disabled","");  



        var ids; 

    ids = $("#list").getGridParam('selarrrow'); 
    if(ids){        
                alert('array: ['+ids+']'); 
                alert('id in array[0]: '+ids[0]);
        }


                                   },
 addCaption: "Add a Deploymet"

},



{// delette option

},
{// Search option
    multipleSearch:true
},
{// view option

}   
);

1 Ответ

0 голосов
/ 21 октября 2011

Наконец-то я получил ответ, много тестируя .. и я хочу поделиться этим ... может быть полезным для некоторых других. В основном я удаляю функцию OnSelectRow и изменяю форматирование: {} добавляя тег onEdit

Я добавляю пример / DEMO, работающий по этой ссылке: DEMO ONLINE

var mydata = [

    {
    "branch": "PACS-3-3-1",
    "comments": "migrated deployment",
    "client_id": 27,
    "deployment_id": 249,
    "release_name": null,
    "num_hosts": 12},

{
    "branch": "PACS-3-1-1",
    "comments": "migrated deployment",
    "client_id": 27,
    "deployment_id": 144,
    "release_name": null,
    "num_hosts": 9},

{
    "branch": "PACS-2-4-1",
    "comments": "2.6.1",
    "client_id": 27,
    "deployment_id": 78,
    "release_name": null,
    "num_hosts": 0},
{
    "branch": "PACS-2-4-2",
    "comments": "PACS-2-4-2",
    "client_id": 27,
    "deployment_id": 46,
    "release_name": null,
    "num_hosts": 0}

];

var lastSel;


$("#list").jqGrid({

    data: mydata,
    datatype: "local",

    colNames: ['Deployment id', 'Branch', 'Release Name', 'Client id', '# of hosts', 'Comments', 'Actions'],
    colModel: [
        {
        name: 'deployment_id',
        index: 'deployment_id',
        align: "right",
        sorttype: "int",
        width: 120},
    {
        name: 'branch',
        index: 'branch',
        align: "center",
        editable: true,
        edittype: "select",
        editrules: {
            required: true
        },
        editoptions: {
            value: "option 1:option1;option2:option2"
        }},
    {
        name: 'release_name',
        index: 'release_name',
        align: "center"},
    {
        name: 'client_id',
        index: 'client_id',
        align: "right",
        sorttype: "int",
        width: 60},
    {
        name: 'num_hosts',
        index: 'num_hosts',
        align: "right",
        sorttype: "int",
        width: 60},
    {
        name: 'comments',
        index: 'comments',
        align: "center",
        editable: true,
        edittype: "textarea",
        editoptions: {
            rows: "2",
            cols: "20"
        }},
    {
        name: 'myac',
        width: 80,
        fixed: true,
        sortable: false,
        resize: false,
        formatter: 'actions',
        formatoptions: {
            keys: true,
            //hace que se abra el popup, en lugar de inlineedit
            //editformbutton: true,
            onEdit: function(rowid) {
                //alert("in onEdit: rowid=" + rowid + "\nWe don't need return anything");
                $("#" + rowid + "_branch").attr("disabled", "disabled");
                $("#" + rowid + "_branch").removeClass("editable");
            }
        }}
    ],

    rowList: [20, 30, 50],

    pager: '#pager',
    sortname: 'deployment_id',
    viewrecords: true,
    recordpos: 'right',
    sortorder: "asc",
    sortable: true,
    multiselect: true,
    shrinkToFit: true,



//    onSelectRow: function(id) {
        //alert("id:"+id);
       // if (id === null) {
       //     id = 0;
//            if (id && id !== lastSel) {

                //$('#list').jqGrid('restoreRow',lastSel);
                //$('#list').jqGrid('editRow',id,false);

//                $("#jqg_list_" + id).attr("disabled", "disabled");
//                lastSel = id;

//            }
//        }
//        else {


//            var grId = $("#list").jqGrid('getGridParam', 'selrow');


//            if (grId) {
//                $("#" + grId + "_branch").attr("disabled", "disabled");
//                $("#" + grId + "_branch").removeClass("editable");
//            }

        //}
   // }



});


// to modify The tool bar on bottom
$("#list").jqGrid('navGrid', '#pager', {
    edit: false,
    edittitle: 'Modify a Deployment',
    add: true,
    addtitle: 'Add a new Deployment',
    del: true,
    deltitle: 'Delete a Deployment',
    nav: {
        addCaption: 'Columns'
    }
}, { // edit option
   // beforeShowForm: function(form) {
   //     $('#branch', form).attr("disabled", "disabled");

   // },

    //seems to be is not qworking   
    beforeSelectRow: function(rowid, e) {
        return false;
    }
},

{ // add option
    beforeShowForm: function(form) {


        $('#branch', form).prepend("<option value=''>Select a branch</option>")
        //$('#branch option[value=""]', form).text('Select a branch');
        $('#branch option[value=""]', form).attr("selected", "selected");
        //$('#branch', form).attr("disabled", "");



        var ids;

        ids = $("#list").getGridParam('selarrrow');
        if (ids) {
            //alert('array: [' + ids + ']');
            //alert('id in array[0]: ' + ids[0]);
        }


    },
    addCaption: "Add a Deploymet"

},



{ // delette option
}, { // Search option
    multipleSearch: true
}, { // view option
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...