2016-03-02 91 views
1

即時使用ag-Grid,但是當它過濾我的數據時出現問題,當我在價格列中過濾數據時,它只適用於數字點而不適用於逗號。Ag-Grid Filter Comma

Link: https://plnkr.co/edit/LDdrRbANSalvb4Iwh5mp?p=preview 

實際實施例: 在價格列選擇框相等並且上述插入件「1.5」和不是試圖插入「1,5」

回答

1

這是因爲該過濾器是一個本機之一。

如果您想處理自定義行爲,請定義您自己的過濾器。

文檔:https://www.ag-grid.com/angular-grid-filtering/index.php

一個快速和骯髒的解決方案是猴子修補NumberFilter這樣的:

NumberFilter.prototype.doesFilterPass = function (node) { 
      if (this.filterNumber === null) { 
       return true; 
      } 
      var value = this.valueGetter(node); 
      if (!value && value !== 0) { 
       return false; 
      } 
      var valueAsNumber; 
      if (typeof value === 'number') { 
       valueAsNumber = value; 
      } 
      else { 
       valueAsNumber = parseFloat(value.replace(',','.')); 
      } 
      switch (this.filterType) { 
       case EQUALS: 
        return valueAsNumber === this.filterNumber; 
       case LESS_THAN: 
        return valueAsNumber < this.filterNumber; 
       case GREATER_THAN: 
        return valueAsNumber > this.filterNumber; 
       default: 
        // should never happen 
        console.warn('invalid filter type ' + this.filterType); 
        return false; 
      } 
}; 

再變線是在這裏:

valueAsNumber = parseFloat(value.replace(',','.')); 
+0

有點兒側問題的,但是AG-網格WID用過嗎?我一直有一些問題使用它與角2應用程序,並發現它很難得到幫助。 – Thaenor

+0

IT無法正常工作,我仍然不能使用逗號過濾價格,只有點數 –

+0

@Thaenor如果您需要幫助,請參加ag-grid論壇。 Angularjs 2還很年輕,但開發人員目前在網格上非常活躍,增加了功能並支持更多的框架。該網格與angularjs2 – Walfrat

0

所以我找到了問題,首先我必須轉換的值有一個字符串比我需要用逗號替換點,上面的答案的問題是第一個因爲的數據類型和替換函數的屬性的順序,但現在的問題是,沒有正確過濾,如果我使用相等的選項搜索,如果給我2個值,而不是固定的,代碼看起來像這樣:

代碼:

NumberFilter.prototype.doesFilterPass = function (node) { 

      if (this.filterNumber === null) { 
       return true; 
      } 
      var value = this.valueGetter(node); 
      if (!value && value !== 0) { 
       return false; 
      } 
      var valueAsNumber; 
      if (typeof value === 'number') { 
      value = value.toString() 
       valueAsNumber = parseFloat(value.replace('.',',')); 
      } 
      else { 
       valueAsNumber = parseFloat(value.replace('.',',')); 
      } 
      switch (this.filterType) { 
       case EQUALS: 
        return valueAsNumber === this.filterNumber; 
       case LESS_THAN: 
        return valueAsNumber < this.filterNumber; 
       case GREATER_THAN: 
        return valueAsNumber > this.filterNumber; 
       default: 
        // should never happen 
        console.warn('invalid filter type ' + this.filterType); 
        return false; 
      } 
}; 
0

可能的解決方案:

NumberFilter.prototype.onFilterChanged =函數(){

​​