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