翻譯|使用教程|編輯:龔雪|2025-08-12 11:23:03.797|閱讀 93 次
概述:本教程主要為大家介紹DevExpress WinForms數據網格控件中的列過濾器功能,歡迎下載最新版組件體驗!
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
DevExpress WinForms擁有180+組件和UI庫,能為Windows Forms平臺創建具有影響力的業務解決方案。DevExpress WinForms能完美構建流暢、美觀且易于使用的應用程序,無論是Office風格的界面,還是分析處理大批量的業務數據,它都能輕松勝任!
本教程將向您展示Microsoft Excel和Microsoft Windows Explorer啟發的數據過濾功能,這些功能可在DevExpress WinForms網格中使用,包括:
您將了解默認情況下可用的內容以及如何禁用或自定義這些UI元素。
獲取DevExpress WinForms v25.1正式版下載
DevExpress技術交流群11:749942875 歡迎一起進群討論
使用懸停列標題時出現的按鈕,可以使用Excel樣式的過濾器下拉菜單。對于除日期-時間外的所有列類型,過濾器下拉列表顯示一個簡單的列表,您可以在其中一次選擇一個項目。
當您選擇一個項目時,網格會自動關閉下拉菜單,并過濾網格的數據,以便在相應的列中顯示具有所選值的記錄。
下拉列表還提供(Custom)項,它調用Custom Filter Editor。與Microsoft Excel非常相似,此對話框允許最終用戶指定最多兩個過濾條件,顯示誰是Mike Roller或Carl Lucas的記錄。
您可以過濾網格對多個列的數據,如果單擊另一列的篩選器按鈕,則只會看到符合先前應用篩選標準的記錄中的值。如果需要查看從所有記錄中獲取的值,請在按住SHIFT鍵的同時單擊過濾器按鈕。如果將篩選條件應用于某列,則該列的篩選器下拉列表將顯示所有值。
若要清除特定列的過濾,請單擊對應下拉列表中的(All)項。
之后,您可以再次單擊列的篩選器按鈕,來在列表頂部查找最近使用的項目,它們與其他項目之間用雙線隔開。
現在關閉應用程序并展開視圖的屬性,要禁用最近使用的篩選器項顯示,請關閉選項,通過設置屬性為10來改變下拉高度。
運行應用程序。現在列標題下拉菜單顯示10個或更少的項目,如果需要,還會顯示一個垂直滾動條,過濾器下拉列表不再顯示最近使用的項目。
單擊日期-時間列中的過濾器按鈕,您會看到一個下拉菜單,里面有一個嵌入式日歷。選擇所需的日期或間隔后,網格立即過濾其數據。
您還可以使用日歷下面的復選框來選擇常見的日期間隔,例如“本月早些時候”、“今年早些時候”等。要清除當前過濾器,請選中Show all復選框,要隱藏下拉菜單,請單擊關閉按鈕。
您也可以使用下拉列表,就像新版的Microsoft Excel或Windows File Explorer一樣。要啟用此模式,請選擇一個列,展開其屬性并將選項設置為。
運行應用程序并單擊列的過濾器按鈕,現在您可以同時選擇多個項目,選擇三個值,單擊OK。
網格現在顯示具有下拉列表中所選值的記錄。
要清除針對該列的過濾,請調用下拉菜單,單擊Select All,然后單擊OK。
過濾器下拉菜單提供特殊項來處理空值或null值,如果在下拉列表中選擇(Blanks)項,則網格將顯示值為空的記錄。
以同樣的方式,您可以選擇(Non Blanks)來過濾掉這些空值。類似地,選中的下拉列表提供(Blanks)項。
默認情況下,日期-時間列的下拉列表不包含此類項。
關閉應用程序。要從下拉菜單中隱藏(blank)和(Non Blanks)項,將屬性設置為False。選擇固定日期列,并將其選項設置為True,這將在日期時間過濾器下拉列表中添加一個空值復選框。
運行應用程序來查看結果。調用Priority列下拉列表,查看它是否包含(Blanks)和(Non Blanks)項。然后單擊Fixed Date列標題中的過濾器按鈕,現在這個列下拉菜單顯示額外的Show Empty復選框。
網格還允許您手動自定義過濾器下拉列表。
您可以添加新的或刪除現有的項目,切換到設計時,看看如何做到這一點。
常規下拉列表可以使用View的事件自定義,該事件會在過濾器下拉列表顯示之前觸發。為這個事件編寫一個處理程序,將一個新的自定義項添加到Priority列的下拉列表中,事件的Column參數指定下拉列表中將要顯示的列。首先,找到第一個值項的索引,在它之前插入一個自定義項。要做到這一點,使用事件的參數的屬性,遍歷當前下拉框顯示的項目。若要跳過分隔MRU項和預定義項的雙線,請檢查當前項是否由對象表示。然后使用當前項的Value屬性。如果是或類型,則當前項不是值項。一旦檢測到值項,就應該停止搜索過程。
之后,創建一個過濾器標準來選擇具有High和Medium優先級的記錄,指定所需的篩選條件和要在過濾器面板中顯示的文本,并用這些設置創建一個新的ColumnFilterInfo對象。將標題為“Important”的過濾選項插入到過濾器下拉框中的指定位置。
C#
private void gridView_ShowFilterPopupListBox(object sender, FilterPopupListBoxEventArgs e) { if (e.Column.FieldName != "Priority") return; // Get the index of the first value item. int index; for (index = 0; index < e.ComboBox.Items.Count; index++) { object item = e.ComboBox.Items[index]; if (item is FilterItem) { object itemValue = ((FilterItem)item).Value; if (itemValue is FilterItem || itemValue is ColumnFilterInfo) continue; break; } } // Create a filter criterion to select records with the "High" and "Medium" priorities. string filterString = "([Priority] == 3 OR [Priority] == 2)"; string filterDisplayText = "[Priority] == High OR [Priority] == Medium"; ColumnFilterInfo filterInfo = new ColumnFilterInfo(filterString, filterDisplayText); e.ComboBox.Items.Insert(index, new FilterItem("Important", filterInfo)); }
運行應用程序來查看結果,單擊優先級列的篩選器按鈕,來在下拉列表中找到顯示的重要項。選擇此項時,網格顯示優先級設置為High或Medium的記錄。
現在關閉應用程序并自定義Name列中的選中的下拉列表,選擇View并處理它的事件,事件的Column參數標識將要顯示的下拉列表的列,參數提供下拉列表的項集合。事件處理程序禁用以‘ Data ’開頭的項,并刪除以‘ Help ’開頭的項。
C#
private void gridView_ShowFilterPopupCheckedListBox(object sender, FilterPopupCheckedListBoxEventArgs e) { if (e.Column.FieldName != "Name") return; for (int i = 0; i < e.CheckedComboBox.Items.Count; i++) { CheckedListBoxItem item = e.CheckedComboBox.Items[i]; string itemValue = (string)(item.Value as FilterItem).Value; // Disable checked items that start with "Data". if (itemValue.StartsWith("Data")) e.CheckedComboBox.Items[i].Enabled = false; // Remove checked items that start with "Help". if (itemValue.StartsWith("Help")) { e.CheckedComboBox.Items.Remove(item); i--; } } }
再次運行應用程序并單擊Name列中的過濾器按鈕,出現的選中的下拉列表不包含以“Help”開頭的項,并且有三個文本以“Data”開頭的禁用項。
慧都是?家?業數字化解決?案公司,專注于軟件、?油與?業領域,以深?的業務理解和?業經驗,幫助企業實現智能化轉型與持續競爭優勢。
慧都科技是DevExpress的中國區的合作伙伴,DevExpress作為用戶界面領域的優秀產品,幫助企業高效構建權限管理、數據可視化(如網格/圖表/儀表盤)、跨平臺系統(WinForms/ASP.NET/.NET MAUI)及行業定制解決方案,加速開發并強化交互體驗。
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自:慧都網