【问题标题】:jqGrid treeGrid editRow and not-editable-celjqGrid treeGrid editRow 和不可编辑-cel
【发布时间】:2012-02-08 13:16:15
【问题描述】:

我有几个可编辑列的网格

colModel: [
    { 
        name: 'id',
        width: 1,
        hidden: true,
        key: true,
        resizable: false
    },
    {
        name: 'name',
        editable: true,
        sortable: false,
        resizable: false
    },
    {
        name: 'name2',
        editable: true,
        sortable: false,
        resizable: false
    },
    treeGrid: true,
    treeGridModel: 'adjacency',
    ExpandColumn: 'name',

出于某种原因,我需要在这些列中有一些不可编辑的单元格

    loadComplete: function() {
        var ids = grid.jqGrid('getDataIDs');

        for (var i=0;i<ids.length;i++) {
            var id=ids[i];
            var row_data = $(this).jqGrid('getRowData', id);

            if (row_data.zzz > 0) {
                if (row_data.zzz > 1) 
                    grid.jqGrid('setCell',id,'name2','','not-editable-cell');
                else
                ...
            }
            else {
                grid.jqGrid('setCell',id,'name','','not-editable-cell');
                ...
            }
        }
    }

所以有些行的两个单元格都可编辑(名称,名称 2),有些只有一个(名称或名称 2)

如果我使用editCell,我没有任何问题 但是editRow不关注不可编辑单元类

我已经通过编辑 jquery.jqGrid.src.js 解决了这个问题 我知道这是非常糟糕的方式

$.jgrid.extend({
//Editing
    editRow : function(rowid,keys,oneditfunc,successfunc, url, extraparam, aftersavefunc,errorfunc, afterrestorefunc) {
.......
        return this.each(function(){
            var $t = this, nm, tmp, editable, cnt=0, focus=null, svr={}, ind,cm;
            if (!$t.grid ) { return; }
            ind = $($t).jqGrid("getInd",rowid,true);
            if( ind === false ) {return;}
            editable = $(ind).attr("editable") || "0";
            if (editable == "0" && !$(ind).hasClass("not-editable-row")) {
                cm = $t.p.colModel;
                $('td[role="gridcell"]',ind).each( function(i) {
///
                    if (!$(this).hasClass("not-editable-cell")) {
///
                    nm = cm[i].name;
                    var treeg = ($t.p.treeGrid===true && nm == $t.p.ExpandColumn) ? true : false;

是否可以通过格式化程序解决这个问题?

【问题讨论】:

    标签: jquery jqgrid


    【解决方案1】:

    "not-editable-cell" 类实际上只用于单元格编辑。内联编辑仅分析"not-editable-row" 调用。您可以更改 jqGrid 的源代码,但在发布新版本的 jqGrid 后,您将遇到维护自定义更改的问题。所以更好的方法是在the trirand forum 中发布您的建议。

    作为一种解决方法,您可以使用我描述的 herehere 的技巧。这个想法很简单:您可以根据单元格包含临时修改editable 属性。在您调用editRow 方法后,您可以直接重置editable 属性,因为编辑字段已经创建。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多