【问题标题】:jqgrid change cell input to readonly after grid loadedjqgrid在加载网格后将单元格输入更改为只读
【发布时间】:2011-07-15 18:28:36
【问题描述】:

加载所有网格数据后,如何将单元格输入更改为“只读”?

我只希望加载的行将此单元格设为只读,当我添加新行时,我不希望此单元格为只读。

提前致谢。

更新:

这是我的代码:

$("#Grid1").jqGrid(
        {
            editurl: "clientArray",
            datatype: 'xmlstring',
            datastr: '<%=_xml_string %>' ,
            colNames:['','cell1','cell2', 'cell3'],
            colModel:[
                                        {name:'cell1',index:'cell1', hidden: true},
                                        {name:'cell2',index:'cell2', width:150, editable:true, edittype:'text',sorttype:"int" ,
                                            editoptions:
                                            {                                               
                                                maxlength:5,
                                                dataInit: function (elem)
                                                {
                                                    $(elem).numeric(false);

                                                    $(elem).blur(function(event_)
                                                    {

                                                    });
                                                },
                                              dataEvents:
                                              [
                                                {
                                                    type: 'keydown',
                                                    fn: function(e)
                                                    {
                                                        var key = e.charCode || e.keyCode;
                                                        if(key == 113)
                                                        {
                                                        }
                                                    }
                                                }
                                            ]
                                            }                                                
                                        },
                                        {name:'cell3',index:'cell3', width:150 , editable:true,sorttype:"text" ,
                                          editoptions:
                                          {
                                            readonly: 'readonly' ,
                                            dataInit: function (elem)
                                            {
                                                  $(elem).attr("tabindex","-1");                                                      
                                            }                                                
                                          }
                                        }
                                  ],
            height: '120px' ,
            autowidth: true,
            shrinkToFit: false,

            beforeSelectRow: function(rowid, e)
            {
               if (required_field != rowid && required_field!="")  return false;
                else
                {
                    if( $(this).getGridParam('selrow') == rowid)
                        return false;
                    else
                        return true;
                }
            },
            onSelectRow: function(id)
            {                                        
                save_row(lastSel);
                get_grid().editRow(id,false,'','','','','','','');
                jQuery ('#' + id + _cell2').focus();
                lastSel=id;                    
            },
            loadComplete: function()
            {
                var grid = $("#Grid1");
                var ids = grid.jqGrid('getDataIDs');
                for (var i=0;i<ids.length;i++)
                {
                    var id_=ids[i];alert(id_);
                    grid.jqGrid('setCell',id_,'cell2','','not-editable-cell');
                }
            }
          });              

【问题讨论】:

    标签: jqgrid


    【解决方案1】:

    如果您使用某种编辑模式来编辑网格,您可以随时在单元格上设置“不可编辑单元格”或在行上设置“不可编辑行”以防止单元格或行可编辑。代码示例见this answer

    【讨论】:

    • @Oleg:谢谢!但由于某种原因,这对我不起作用..我正在使用 editurl: "clientArray",datatype: 'xmlstring',datastr: '' ,并且在 dataInit: function (elem) 我有 $ (elem).numeric(假);。我添加了您在示例中所写的内容。有什么想法吗?
    • @user590586:我尝试在$(elem).numeric(false); 内部使用dataInit,并且在我的代码中都运行良好。如果我将“不可编辑行”类添加到某些行,它们是不可编辑的。我不明白你想让哪些单元格“只读”。可能您应该只发布您想要拥有的“只读”单元格的 HTML 代码,我将展示如何将代码放置在 jqGrid 单元格内。
    • @Oleg:我真的很感谢你的帮助!!我已经用当前代码更新了我的问题。
    • @user590586:您可以执行以下操作。您可以在colModel 中设置editable:false 或不设置editable 的值。所以网格将是不可编辑的。然后,您可以在数组中保存用户添加 addRowData 的所有行的 ID。在onSelectRow 中,您可以测试所选行的rowid 是否在先前添加的行的数组中。如果 rowid 不在数组中,则不要调用 editRow 并返回。如果 rowid 是之前添加的行的 id,您在需要调用 editRow 的所有列中设置临时 editable:true 并将 editable 更改回 false。它会工作
    • @user590586:如果您使用 单元格编辑 jqGrid 检查“不可编辑单元格”类的单元格。如果您使用 内联编辑 'not-editable-row' 的 jqGrid 行,但在内联编辑模式下,'not-editable-cell' 类将被忽略。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-22
    • 2012-10-19
    • 1970-01-01
    相关资源
    最近更新 更多