2016-03-31 9 views
0

私は剣道グリッドを使ってデータを表示しています。私は日付の値(等号)を指定して日付フィールドをフィルタリングするとき、それは正常に動作します。しかし、フィルタの前後の条件を使用すると、データが誤ってフィルタリングされます。剣道グリッド日付フィルタが前後で動作しない

また、日付フィールドでソートしても、正しく並べ替えられません。どんな助けでも大歓迎です。参考:私はmoment.jsを使ってデータをdd/mm/yyyy形式でフォーマットしました。ここで

は、データとコードスニペットです:スキーマ内parse設定を削除

$("#testgrid").kendoGrid({ 
    change:onChange, 
    dataSource: { 
     data: [ 
      {"No":"27691","ClientName":"ABC","ExpiryDate":"2015-03-14T00:00:00Z"}, 
      {"No":"27691","Name":"DEF","ExpiryDate":"2016-03-22T00:00:00Z"}, 
      {"No":"27691","Name":"ABC","ExpiryDate":"2015-02-28T00:00:00Z"}, 
      {"No":"27691","Name":"ABC","ExpiryDate":"2011-07-03T00:00:00Z"}, 
      {"No":"27691","Name":"ABC","ExpiryDate":"2015-07-31T00:00:00Z"}, 
      {"No":"27691","Name":"ABC","ExpiryDate":null}, 
      {"No":"27691","Name":"ABC","ExpiryDate":"2012-04-30T00:00:00Z"} 
     ], 
     schema: { 
      model: { 
       fields: { 
        No: { type: "string" }, 
        ExpiryDate: { 
         type: "date", 
         parse: function(inputdate) { 
          var dtval = moment(inputdate).format('DD/MM/YYYY'); 

          if (dtval == "Invalid date") 
           return ""; 
          else return dtval;} 
         }, 
         Name: { type: "string" } 
        } 
       } 
      }, 
      pageSize: 20 
     }, 
     height: 550, 
     selectable: "single row", 
     allowCopy: true, 
     resizable: true, 
     groupable: true, 
     sortable: true, 
     filterable: { 
      mode: 'row', 
      extra: false, 
      operators: { 
       string: { 
        startswith: "Starts with", 
        eq: "Is equal to", 
        neq: "Is not equal to" 
       } 
      } 
     }, 
     pageable: true, 
     columns: [ 
      { field: "No", title: "Number", filterable: { cell: { showOperators: true, operator: "contains" } } , width: 150 }, 
        { field: "Name", title: "Name", filterable: { cell: { showOperators: true} }, width: 150 },       
        { field: "ExpiryDate", title: "Expiry Date", 
         format: "{0:dd/MM/yyyy}", filterable: { 
           cell: { 
            template: function (args) { 
            args.element.kendoDatePicker({ 
            format: "{0:dd/MM/yyyy}" 
             }); 
            } 
           }} 
        , width: 150 } 
        ] 
       });` 
+0

現時点ではこれはおそらく問題ではありません。将来的には、あなたが何が期待されるのかを指定すると助けになるでしょう。たとえば、ソートが機能していないと言うと、ソート順*が何であるべきか、そして実際に*何であるべきかを指定しておけば助けになりました。 – sfuqua

答えて

0

は、おそらく並べ替え問題を解決します。フィルタリングでは、おそらくあなたの日付はUTCになっていますが、剣道はあなたのブラウザの現地時間で表示し、時間を処理する必要があります。

私は米国中部夏時間(CDT)にいるので、2015-03-14T00:00:00Zはグリッドに13/03/2015と表示されます。 13/03/2015で「等価」フィルタを使用すると、グリッドに結果が表示されません。同じこと - 結果なし - 14/03/2015で。 datepickerテンプレートの書式をdd/MM/yyyy HH:mm:ssに変更し、フィルタを13/03/2015 19:00:00でフィルタすると、期待通りにそのエントリが取得されます。

"equals"を使用するには、(a)時間コンポーネントと(b)ローカルからUTCへの変換を覚えておく必要があります。

デモ興味深いことにKendo Dojo

1

に、私は、フィルタフィールド自己に関連する問題で苦労してきました。日付の形式を変更できませんでした。

「ExpiryDate」フィールドのコードセクションで問題を解決できました。

{filterable:{cell:{template:function(args){args.element.kendoDatePicker({format: "{0:dd/MM/yyyy}"}); } }}

これを他の人に向けて強調することが有効かもしれないと考えました。

関連する問題