2015-05-15 64 views
0

我有一個來自服務器的JSON響應,我試圖綁定到JQgrid。但是,響應是JSON字符串具有「點」作爲對象名稱的一部分。我無法用「點」JqGrid無法綁定JSON數據與「點」

這裏得到的jqGrid工作的問題樣品撥弄我面對http://jsfiddle.net/sharathchandramg/rpdfrb0L/2/

$("#grid").jqGrid({ 
data: data, 
datatype: "local", 
height: 250, 
colNames: ['Name', 'Cluster', 'Location'], 
colModel: [{ 
    name: 'name', 
    width: 120 
}, { 
    name: 'metrics.cluster.first.value', 
    width: 60, 
    jsonmap: function (obj) { 

     return obj.metrics['cluster.first'].value 
    } 
}, { 
    name: 'metrics.location-latitude.value', 
    width: 60 
}, ], 
caption: "Example" 
}); 

如圖所示的小提琴,我不能到屬性「綁定cluster.first「,即使在使用jsonmap時也是如此。而如果屬性名稱是「位置緯度」,則網格工作正常。

讓我知道我做錯了什麼。

+0

你可以發佈模擬數據? –

+0

小提琴鏈接有我用於測試的樣本模擬數據 –

回答

2

原因很簡單。如果在jqGrid 4.6中使用datatype: "local",則屬性jsonmap將被忽略。我改變了free jqGrid的行爲(請參閱the wiki)。所以一個可能的解決方案是使用免費的jqGrid 4.8或更高版本而不是jqGrid 4.6。

解決問題的一個更簡單的方法是使用datatype: "jsonstring"。您可以驗證

$("#grid").jqGrid({ 
    datastr: data, 
    datatype: "jsonstring", 
    height: "auto", 
    colNames: ['Name', 'Cluster', 'Location'], 
    colModel: [{ 
     name: 'name', 
     width: 120 
    }, { 
     name: 'metrics_cluster_first_value', 
     width: 60, 
     jsonmap: function (obj) { 
      return obj.metrics['cluster.first'].value 
     } 
    }, { 
     name: 'metrics_location_latitude_value', 
     jsonmap: 'metrics.location-latitude.value', 
     width: 60 
    }], 
    caption: "Example" 
}); 

請參閱http://jsfiddle.net/OlegKi/rpdfrb0L/5/。你還可以看到,我更改了name所有colModel項目的屬性,使其內部沒有任何點。我建議始終遵守規則。

+0

此外,如果使用jsonstring,則應通過datastr屬性提供數據 –

+0

@RamanathanMuthuraman:是,原因,請參閱我的答案的代碼。 'datatype:「jsonstring」'的輸入是'datastr',它可以包含對象而不僅僅是JSON字符串。 – Oleg

+0

謝謝,我能夠使用最新的源代碼工作。如果我需要動態綁定列標題和數據,同樣的事情會工作嗎? –