我希望能夠過濾我的TcxGrid組件中加載的記錄,我有GridMode,因為網格在我的申請表上顯示記錄的速度有點慢,但是這個模式不能讓我使用列的過濾器(只有默認的)。
我在官方論壇上發現了這個問題:
過濾可以通過設定資料控制器的Filter.AutoDataSetFilter屬性值為True來實作。這樣一來,過濾運算式將自動應用于底層資料集。同時,請注意,在網格模式下作業的網格,不會在列的下拉過濾器串列中創建可能的過濾器專案的串列。然而,你可以在列的OnGetFilterDisplayText或OnGetFilterValues事件或資料控制器的OnGetValueList事件中自己實作。請參考ExpressQuantumGrid的檔案,以獲得更多關于這些事件和如何使用它們的資訊。
但是我想不出該如何做,因為我找不到那些檔案。希望得到任何幫助
uj5u.com熱心網友回復:
DevExpress有一個很好的支持團隊,如果你對他們的產品需要幫助,請聯系他們。
無論如何,大致上,它的作業原理如下。
你可以使用列的OnGetFilterValues事件通過代碼自由地添加值:
procedure TForm1. cxGrid1DBTableView1MYFIELDGetFilterValues(
發送者。TcxCustomGridTableItem; AValueList: TcxDataFilterValueList);?
begin
AValueList.Add(fviValue, 'Value A', 'Value A', False)。)
AValueList.Add(fviValue, 'Value B', 'Value B', False);
AValueList.Add(fviValue, 'Value C', 'Value C', False);
end。
設定DataController的Filter.AutoDataSetFilter使底層的TDataSet.Filter屬性自動填充相應的條件。例如:
ShowMessage(cxGrid1DBTableView1.DataController.DataSet.Filter) 。
((MYFIELD = 'Value A') OR (MYFIELD = 'Value B'))
這顯然取決于你所使用的TDataSet的子類在Filter的屬性改變時的反應。
如果你需要更多的靈活性,你可以使用DataController.Filter.OnBeforeChange或者DataController.Filter.OnChanged事件處理程式。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/316475.html
標籤:



