2013-02-05 54 views
1

我的jqGrid包含一個特殊的列,其值由另一個值生成,如持續時間列,其實際值以秒爲單位,如3690s,我應該將其轉換爲formmatted字符串'Hour:Minute:Second',在這個原因中它是'1:1:30'。現在,我想它的工作原理以及在sortting,所以我寫了一個自定義函數來處理這個問題:自定義sorttype函數在jqGrid中無法正常工作

1,下面的代碼片段是列定義:

{ 
    name : 'time', 
    index : 'time', 
    align: 'center', 
    width : '12%', 
    sorttype : sortTimeFuc 
} 

2,下面的代碼片段是排序功能:

var sortTimeFuc = (function(cell) { 
    var a = cell.split(':'); 
    var value = parseInt(a[2]) + parseInt(a[1]) * 60 + parseInt(a[0]) * 3600; 
    return value; 
}); 

但它無法正常工作如下:

enter image description here

任何人都可以幫我嗎?非常感謝。

回答

1

在我看來,你犯了一些錯誤。首先,您應該刪除該函數的括號。不需要的括號可以跟隨該函數的調用。我在代碼中看到的第二個也是最重要的錯誤是使用parseInt而沒有第二個參數10.最後一個錯誤是使用width : '12%'。 jqGrid不支持寬度內的'%'。除此之外,您只能使用width: 12並指定總網格中的width或使用autowidth: true。因爲選項shrinkToFit: true是默認選項,如果將根據列的寬度jgGrid和width屬性縮放列的寬度,該屬性將定義列之間的比例。

所以生成的代碼可以像下面

{ 
    name: 'time', 
    align: 'center', 
    width: 12, 
    sorttype: function (cell) { 
     var a = cell.split(':'); 
     return parseInt(a[2], 10) + parseInt(a[1], 10) * 60 + 
      parseInt(a[0], 10) * 3600; 
    } 
} 

the answer非常接近實現自定義排序的例子。

+0

非常感謝。我以其他方式解決它。 –

+0

@BradyChu:不客氣!下一次您應該在發佈新問題之前更好地投入更多時間。您通過發佈不需要的問題來花費其他人的時間。 – Oleg

+0

對此,我很抱歉,在我發佈有關此平臺的任何問題之前,我會認真考慮您的建議。 –

0

由於合併時間字符串符合字符串的排序條件,所以只需將此列的排序類型設置爲「文本」即可。問題解決了。

相關問題