2016-02-22 1 views
0

нужна помощь при сортировке этих результатов json по дням внутри kendoGrid. Мне нужен способ превратить знак плюса в .5 или что-то в этом роде. Я полагаю, что мне нужно пройти через каждый из них, если я найду знак плюса, а затем измените значение на число 5, а затем верните новое значение перед отображением?сортировка в сетке кендо с использованием пользовательских значений

{ name: Alex, days: "2" }, 
{ name: Jason, days: "1" }, 
{ name: Fred, days: "2+" }, 
{ name: Jane, days: "3" }, 
{ name: John, days: "3+" } 
+0

Что вы уже пробовали? –

+0

Ничего, я хотел поделиться с сообществом, если кто-то уже побил эту проблему. Я планирую попробовать перебирать каждый объект, заменяя знак + на .5 и затем отображая этот путь. Мысли? – KendoUiNewbie

ответ

0

Вот код, который я получил работать

<body> 
    <div id="grid"> 

    </div> 
    <div> 
     <script> 
      $(document).ready(function() { 
       //JSON data 
       var people = [ 
       { firstName: "Hasibul", lastName: "Haque", email: "[email protected]", rank:"2" } 
       , { firstName: "Jane", lastName: "Smith", email: "[email protected]", rank: "3+" } 
       , { firstName: "Jason", lastName: "Doe", email: "[email protected]", rank: "1" } 
       , { firstName: "John", lastName: "doe", email: "[email protected]", rank: "3+" } 
       , { firstName: "Joan", lastName: "doe", email: "[email protected]", rank: "5" } 
       , { firstName: "Jack", lastName: "doe", email: "hasi[email protected]", rank: "3" } 
       , { firstName: "Jacob", lastName: "doe", email: "[email protected]", rank: "3-" } 
        , { firstName: "Joe", lastName: "doe", email: "[email protected]", rank: "3-" } 

       ]; 


       $('#grid').kendoGrid({ 
        dataSource: { 
         type: "json", 
         data: people, 
         pageSize: 15, 
         sort: ({ field: "rank" }) 
        }, 
        sortable: true, 
        columns:[{ 
         field: "rank", 
         sortable: { 
          compare: function (a, b, asc) { 

           var s1 = a.rank; 
           var s2 = b.rank; 

           var n1, n2; 
           var sg1, sg2; 

           var plus = s1.indexOf('+'); 
           var minus = s1.indexOf('-'); 

           if(plus >= 0){ 
            n1 = parseInt(s1.substr(0, plus)); 
            sg1 = 1; 
           } 
           else if(minus >= 0){ 
            n1 = parseInt(s1.substr(0, minus)); 
            sg1 = -1; 
           } 
           else{ 
            n1 = parseInt(s1); 
            sg1 = 0; 
           } 

           plus = s2.indexOf('+'); 
           minus = s2.indexOf('-'); 

           if (plus >= 0) { 
            n2 = parseInt(s2.substr(0, plus)); 
            sg2 = 1; 
           } 
           else if (minus >= 0) { 
            n2 = parseInt(s2.substr(0, minus)); 
            sg2 = -1; 
           } 
           else { 
            n2 = parseInt(s2); 
            sg2 = 0; 
           } 

           if (n1 == n2) { 
            return sg2 - sg1; 
           } else { 
            return n2 - n1; 
           } 
          } 
         } 
        }]            
        , 
        pageable: { 

         buttonCount: 1 
        }, 
        schema: { 
         data: "people" 

        } 
        //binding JSON data with grid 

       }); 




      }); 
     </script> 
Смежные вопросы