2015-06-12 2 views
0

У меня есть сетка, которая получает 2 строки от обработчика, я пытаюсь идентифицировать ключевой столбец, здесь я переименовал его с id на xqz и rr45. Когда я редактирую ячейку, мой дескриптор получает идентификатор 1, который, как представляется, является номером журнала, а не фактическим идентификатором.jqGrid отправляет неправильный идентификатор на ячейку edit

<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
    <title>jQgrid - ASPX</title> 
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
    <!--<script src="http://asp2d:1138/jquery-1.8.3.js"></script>--> 
    <!--<script src="http://asp2d:1138/jquery-ui-1.9.2.custom.js"></script>--> 
    <script type="text/javascript" src="http://asp2d:1138/grid.locale-en.js"></script> 
    <script type="text/javascript" src="http://asp2d:1138/jquery.jqGrid.min.js"></script> 
    <link rel="stylesheet" type="text/css" media="screen" href="http://asp2d:1138/jquery-ui-1.9.2.custom.css" /> 
    <link rel="stylesheet" type="text/css" media="screen" href="http://asp2d:1138/ui.jqgrid.css" /> 
    <script> 
     $(function() { 
      $("#list").jqGrid({ 
       url: "/capplanning/SitePages/jsonhandler.aspx?wherefrom=Category One", 
       datatype: "json", 
       mtype: "GET", 

       colNames: ["xyz", "category_type", "category_value"], 
       colModel: [{ 
        name: "rr45", 
        sortable: true, 
        key: true, 
        editable: true, 
        hidden: true, 
        edithidden: false 
       }, { 
        name: "category_type", 
        sortable: true, 
        editable: false 
       }, { 
        name: "category_value", 
        sortable: true, 
        editable: true 
       }], 
       pager: "#pager", 
       caption: "Category One", 
       loadonce: "true", 
       height: "100%", 
       cellEdit: true, 
       cellsubmit: "remote", 
       cellurl: "/capplanning/SitePages/jsonhandler.aspx?editedgrid=editcategory1", 
       autowidth: true, 
       rowNum: 9999, 
       gridview: true, 
       multiselect: false 
        /*rowList:[10,15,20]*/ 
      }); 
      $("#list").jqGrid('filterToolbar', { 
       stringResult: true, 
       searchOnEnter: false 
      }); 
      $("#list").jqGrid('navGrid', '#pager', { 
       edit: false, 
       add: true, 
       del: true 
      }); 

      $("#list").jqGrid('navButtonAdd', '#pager', { 
       caption: '', 
       title: 'Show/Hide Filters', 
       buttonicon: 'ui-icon-arrowthickstop-1-e', 
       onClickButton: function() { 
        this.toggleToolbar(); 
        if ($.isFunction(this.p._complete)) { 
         if ($('.ui-search-toolbar', this.grid.hDiv).is(':visible')) { 
          $('.ui-search-toolbar', this.grid.fhDiv).show(); 
         } else { 
          $('.ui-search-toolbar', this.grid.fhDiv).hide(); 
         } 
         this.p._complete.call(this); 
         fixPositionsOfFrozenDivs.call(this); 
        } 
       } 
      }); 
      $("#list")[0].toggleToolbar(); 

     }); 
    </script> 
</head> 

<body> 
    <table id="list"> 
     <tr> 
      <td></td> 
     </tr> 
    </table> 
    <div id="pager"></div> 
</body> 

</html> 

JSON

{ 
    "rows": [{ 
     "id": "2", 
     "cell": ["2", "CategoryOne", "Maintenancedd"] 
    }, { 
     "id": "3", 
     "cell": ["3", "CategoryOne", "Maintenance"] 
    }, { 
     "id": "4", 
     "cell": ["4", "CategoryOne", "New Growth"] 
    }] 
} 

В моем обработчике редактирования он приходит с

Key = category_value Value = Maintenance 
Key = id Value = **1** 
Key = oper Value = edit 
+0

** Какая версия jqGrid вы используете? ** Вы входные данные содержат 'id' свойство отдельно. В случае, я бы рекомендовал вам попробовать ** удалить 'key: true' ** из' 'rr45" '. Например, версия 4.7 имела соответствующую ошибку. – Oleg

+0

ничего не работает, нет комбинации удаления ключа: true или переименование столбцов. Я думаю, что использую 4.8.2. Извините, я не слишком уверен, как проверить версию. Каталог с jqgrid называется Guriddo_jqGrid_JS_4.8.2. – Demosthenes

+0

Олег, если вы знаете, как мне передать другой столбец на редактирование ячеек, а также идентификатор, я мог бы разместить свой собственный столбец идентификаторов, не кажется, что это хороший ответ на эту проблему в любом месте. – Demosthenes

ответ

1

Я думаю, что есть определенная ошибка здесь, jqGrid загружает идентификатор строки в качестве порядковых не поле, которое является связанный через столбец первичного ключа, чтобы исправить это, я реализовал то, что можно назвать только грязным взломом!

первым, создайте обработчик события на стороне клиента, когда вы связываете свою модель сетки:

ClientSideEvents cev = new ClientSideEvents() { 
    GridInitialized = "loadComplete" 
}; 

"loadComplete" является Java-функция в моих главных .js стека:

function loadComplete() { 
    $('tr.jqgrow[role="row"]').each(function (i, e) { 
     var Id = $(e).children().first().attr("title"); 
     $(e).attr("id", Id); 
    }); 
}; 

Это в основном, позволяет сетке завершить визуализацию, а затем разрывает поиск первого столбца (при условии, что это поле идентификатора, в моем случае оно всегда есть) и устанавливает атрибут «id» строки в значение атрибута «title» в первый ребенок (который получает правильное значение), тем самым устанавливая идентификатор строки на th е правильное значение

Какая куча собачьего дерьма эта сетка действительно .. :(

Смежные вопросы