Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery jqGrid-“一个;可编辑";:&引用;“真的”;在网格列的JSON响应中_Jquery_Json_Jqgrid - Fatal编程技术网

Jquery jqGrid-“一个;可编辑";:&引用;“真的”;在网格列的JSON响应中

Jquery jqGrid-“一个;可编辑";:&引用;“真的”;在网格列的JSON响应中,jquery,json,jqgrid,Jquery,Json,Jqgrid,问题1 我将列模型作为 {name:'fname',index:'fname', width:50, align:"center", resizable:false}, {name:'lname',index:'lname', width:50, align:"center", resizable:false}, {name:'date',index:'date', width:50, align:"center", resizable:false, editable:true} 如果我更改j

问题1

我将列模型作为

{name:'fname',index:'fname', width:50, align:"center", resizable:false},
{name:'lname',index:'lname', width:50, align:"center", resizable:false},
{name:'date',index:'date', width:50, align:"center", resizable:false, editable:true}
如果我更改jqGrid JSON响应以包含列的名称,jqGrid数据行将为空,没有数据

{
    "rows":[
        {
            "id":"1",           
            "cell":{                
                "fname":"S",
                "lname":"K",
                "date":"11/11/2011"
            }
        }
    ],
    "userdata":{"amount":3220,"tax":342,"total":3564,"name":"Totals:"}
}
问题2——我尝试在单元格定义中添加“editable”(带或不带列名。这里我显示的是带列名的JSON结构),jqGrid数据行再次为空

{
    "rows": [
        {
            "id": "1",
            "cell": {
                "fname": "S",
                "lname": "K",
                "date": [
                    {
                        "date": "11/11/2011",
                        "editable": "true"
                    }
                ]
            }
        }
    ],
    "userdata": {
        "amount": 3220,
        "tax": 342,
        "total": 3564,
        "name": "Totals:"
    }
}
表格单元格已绘制,但jqGrid未拾取JSON数据。

我做错了什么

jqGrid JSONReader

jQuery("#editjqGrid").jqGrid({
    url: "http://localhost/edit.json",
    datatype: "json",
    contentType: "application/x-javascript; charset=utf-8",
    colNames:['fname','lname', 'date'],
    colModel:[
        {name:'fname',index:'fname', width:50, align:"center", resizable:false},
        {name:'lname',index:'lname', width:50, align:"center", resizable:false},
        {name:'date',index:'date', width:50, align:"center", resizable:false, editable:true}
    ],
    loadComplete: function (data) {     
        var item, i, l = data && data.rows.cell ? data.rows.cell.length : 0;
        for (i = 0; i < l; i++) {
            item = data.rows.cell[i];           
            if (item.editable === "false") {
                $("#" + item).addClass("not-editable-cell");
            }
        }
    }

});
jQuery("#editjqGrid").jqGrid('navGrid','#pager2',{add:false,del:false,edit:false,position:'right',minWidth:800,maxWidth:1405,minHeight:350,maxHeight:680});
更新2:取出“单元格”

    {
        "rows": [
            {
                "id": "1",
                "fname": "S",
                "lname": "K",
                "date": {
                    "value": "11/11/2011",
                    "editable": "true",
                    "edittype":"input",
                    "editoptions":{
                        "size":"20",
                        "maxlength":"30"
                    }
                }
                "emptype":{
                    "editable":"true",
                    "edittype":"select",
                    "editoptions":{
                        "option":"Full Time",
                        "option":"Part Time",
                        "option":"Hourly"
                     }
                }
            }                
        ]
    }
更新3:添加回“单元格”并修改edittype和editoptions

       {
    "rows": [
        {
            "id": "1",
            "cell": {
                "fname": "S",
                "lname": "K",
                "date": {
                    "value": "11/11/2011",
                    "editable": "true",
                    "edittype":"text",
                    "editoptions":{
                         "size":"20",
                         "maxlength":"30"
                    }
                }
                "emptype":{
                    "editable":"true",
                    "edittype":"select",
                    "editoptions":{
                        "value":"Full Time",
                        "value":"Part Time",
                        "value":"Hourly"
                    }
                }
            }
        }
    ]
loadComplete-“不可编辑单元格”不工作

loadComplete: function (data) {               
     var rowItem, x, l = data && data.rows ? data.rows.length : 0;           
     for (x = 0; x < l; x++) {  
    if (data.rows[x].cell.date.editable === "false") {
            $("#" + data.rows[x].id + "td[aria-describedby='editTimecard_date']").addClass("not-editable-cell");
    }
}
loadComplete:函数(数据){
var rowItem,x,l=data&&data.rows?data.rows.length:0;
对于(x=0;x
}看一看

这是一个如何有条件地编辑行的

代码段:

onSelectRow: function(id) {
  var data = jQuery('#grid_id').getRowData(id);
  if(data.editable == true) {  // <-- you may have to check this
    jQuery('#grid_id').editRow(id, true);
  }
}
onsetrow:function(id){
var data=jQuery(“#grid_id”).getRowData(id);

如果(data.editable==true){/问题1非常简单。在JSON中,您使用了
“cell”
和命名属性,这对于默认的JSON读取器是错误的。因此,您可以通过两种方式解决问题

第一种方法。您不更改数据的JSON格式,而是添加
jsonReader:{repeatitems:false}
参数和
jsonmap
单元格。
每列中的前缀:

colModel: [
    {name: 'fname', index: 'fname', jsonmap: 'cell.fname', width: 70, align: "center", resizable: false},
    {name: 'lname', index: 'lname', jsonmap: 'cell.lname', width: 70, align: "center", resizable: false},
    {name: 'date',  index: 'date',  jsonmap: 'cell.date', width: 70, align: "center", resizable: false, editable: true}
],
jsonReader: {repeatitems: false}
(见附件)

第二种方法。只使用
jsonReader:{repeateItems:false}
并从JSON数据中删除
单元格
部分:

{
    "rows":[
        {
            "id":"1",           
            "fname":"S",
            "lname":"K",
            "date":"11/11/2011"
        }
    ],
    "userdata":{"amount":3220,"tax":342,"total":3564,"name":"Totals:"}
}
(见附件)


在问题的第二部分,我发现
“日期”的格式非常奇怪
JSON数据的一部分。为什么属性的值是数组?它可以有多个作为一项吗?在这种情况下数据应该如何显示?我认为您应该更改数据的格式。

我不认为我在寻找这个。我试图控制JSON中的可编辑和其他内联编辑选项。是否要编辑
日期
仅当json数据包含
可编辑:true
?查看我的更新代码。也许这会让您更好地理解我的意思问题是我没有获取行中的json数据,因此此时不值得尝试。抱歉,我的意思更像是本页上的第二个代码块感谢您帮助我解决
问题em 1
问题2
-我的json不好。我在原始帖子的标题“updated”下对其进行了更新。基本上,我希望所有内联编辑选项都用json控制。@SK11:应该
“editable”:“true”
来自json输入的“true”
“editable”:true?date是唯一可以编辑的列吗?
“可编辑”:“true”
“可编辑”:就jqgrid渲染而言,true
没有区别。但是,是的,“true”是一个字符串,true是一个布尔值。不,任何数量的字段都可以编辑。例如:在10列中,只有5列可以编辑。我已经更新了上面的JSON结构,以包含另一个可以编辑的单元格。@SK11:您上次建议的JSON格式没有以前的好。问题1:我认为使用
“单元格没有任何意义”
property。问题2:您应该更好地定义静态
jsonReader
,它将适用于每一列(可编辑或不可编辑)。当前可以直接读取
lname
属性,要读取
'date'
列的值,需要读取
value
属性。
lname
的值是字符串,
date
的值是object,
emptype
的值是
未定义的
。问题3:您不持有属性类型在
colModel
中:
editable
是布尔值,
editoptions
for
emptype
是绝对错误的。
{
    "rows":[
        {
            "id":"1",           
            "fname":"S",
            "lname":"K",
            "date":"11/11/2011"
        }
    ],
    "userdata":{"amount":3220,"tax":342,"total":3564,"name":"Totals:"}
}