2013-01-31 50 views
1

只是想確認一些東西在這裏。是否有可能直接使用jqGrid的userData與JavaScript類型(而不是使用帶有字段的對象)?jqGrid用戶數據與數值類型,而不是對象

如果我在jqGrid的文檔修改example,我想這個JSON返回的jqGrid:

{ 
    total: "xxx", 
    page: "yyy", 
    records: "zzz", 
    userdata: 0, 
    rows : [ 
    {id:"1", cell:["cell11", "cell12", "cell13"]}, 
    {id:"2", cell:["cell21", "cell22", "cell23"]}, 
    ... 
    ] 
} 

,並有jQuery("grid_id").jqGrid('getGridParam', 'userData')回報0

目前它似乎返回一個空對象{ }來代替。

我使用jqGrid 4.4.1。

回答

1

userdata jqGrid的部分JSON輸入應爲對象。如果您需要返回標量的userdata裏面你應該使用類似

"userdata": { mycounter: 0 } 

然後用

var userdata = $("#grid_id").jqGrid("getGridParam", "userData"); 
if (userdata) { 
    alert(userdata.mycounter); 
} 
+0

是的,這是解決方法。奇怪的是,如果我返回1而不是0,它實際上可以工作:所以除了一個值之外,它幾乎可以工作......儘管如此,它仍然適用於所有值。我將不得不在我的.net代碼中專門創建一個類型,因爲我使用了.net-to-json序列化程序來構建此json。 –

+0

@EvrenKuzucuoglu這是因爲jqGrid如何從請求中提取數據,正是這一行:'ts.p.userData = $ .jgrid.getAccessor(data,dReader.userdata)|| {};'。如果'||'運算符可以轉換爲'true',它將返回左邊的部分,否則它將返回右邊的部分。 JavaScript中的值「0」評估爲「false」。 – tpeczek

+0

是的,所以它會對false,null和undefined執行相同的操作。那麼最好使用一個對象!謝謝。 –

0

OK打完有點摸索,看來問題與值0其他值(我試過1)回來很好,但是當它是0時,我得到了{}。

我也試圖改變讀者,而不是使用的字段名稱的函數:

jsonReader: { 
    ... 
    userdata: function(json) { return json.response.userdata; }, 
    ... 
} 

但行爲是完全一樣的:當數值爲0,1,當它是1 {}。

我也更新到4.4.4,但它不會改變它。

我不知道這是否適用於錯誤或非文件化的限制,但我會返回一個數值字段而不是數值本身的對象,它將解決問題。

相關問題