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