翻譯|使用教程|編輯:龔雪|2025-09-10 10:16:07.997|閱讀 1 次
概述:本教程主要為大家介紹DevExpress WinForms數據網格控件中的過濾器行功能,歡迎下載最新版組件體驗!
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
DevExpress WinForms擁有180+組件和UI庫,能為Windows Forms平臺創建具有影響力的業務解決方案。DevExpress WinForms能完美構建流暢、美觀且易于使用的應用程序,無論是Office風格的界面,還是分析處理大批量的業務數據,它都能輕松勝任!
本教程提供了有關DevExpress WinForms Grid的API信息,該API運行您過濾數據并定位行。在本文中您將了解如何將過濾條件應用于整個視圖或單個列,如何清除現有過濾條件,以及如何按單元格值定位行或顯示文本。
獲取DevExpress WinForms v25.1正式版下載
DevExpress技術交流群11:749942875 歡迎一起進群討論
DevExpress WinForms Grid的API允許您對視圖或單個列應用過濾條件,本教程將通過把Click處理程序分配給View Filtering(視圖過濾)和Column Filtering(列過濾)組中的按鈕來展示這兩種方法。
首先,處理View Filtering組中Apply Filter按鈕的Click事件。在事件處理程序中,將過濾器表達式分配給視圖的屬性。
過濾器表達式包含由OR和AND邏輯運算符組合的三個子句,第一和第二子句用括號分組,過濾條件使用各種比較運算符,例如大于或不等于。日期-時間常量必須用“#”字符封裝,而字符串常量必須用單引號括起來。
C#
private void btn_ApplyViewFilter_ItemClick(object sender, ItemClickEventArgs e) { gridView.ActiveFilterString = "([UnitPrice] < 20 OR [OrderDate] >= #06/1/2015#) AND [ProductName] <> 'Chang'"; }
現在為Clear Filter按鈕編寫事件處理程序。要清除視圖及其所有列的過濾器設置,請調用視圖屬性的clear方法。
C#
private void btn_ClearViewFilter_ItemClick(object sender, ItemClickEventArgs e) { gridView.ActiveFilter.Clear(); }
運行應用程序來查看結果,點擊Apply Filter按鈕,選擇單價小于20或訂單日期大于6月1日且產品名稱不是“chang”的記錄。網格將顯示過濾器表達式中涉及的列的過濾器按鈕,但是這些列中的過濾器下拉列表不包含可清除過濾器的項。
單擊Clear Filter按鈕來刪除整個視圖中得過濾器設置。
關閉應用程序并切換到 Column Filtering組,處理Apply Filter按鈕的Click事件,來選擇單價大于20且小于30的記錄。為此,使用所需的過濾條件創建一個新的對象,并將其分配給Unit Price列的屬性。
C#
private void btn_ApplyColumnFilter_ItemClick(object sender, ItemClickEventArgs e) { string filterString = "[UnitPrice] > 20 AND [UnitPrice] < 30"; gridView.Columns["UnitPrice"].FilterInfo = new ColumnFilterInfo(filterString); }
在ClearFilter按鈕的Click事件處理程序中,調用目標列的方法。
C#
private void btn_ClearColumnFilter_ItemClick(object sender, ItemClickEventArgs e) { gridView.Columns["UnitPrice"].ClearFilter(); }
運行應用程序并單擊Column Filtering組中的Apply Filter按鈕,來根據Unit Price列過濾數據。現在,目標列的下拉列表包含清除列過濾器的(All)項。
通過單擊相應的Clear filter按鈕,刪除應用于該列的過濾器。
要更改過濾器面板中顯示的文本,請向對象構造函數添加一個參數。
C#
private void btn_ApplyColumnFilter_ItemClick(object sender, ItemClickEventArgs e) { string filterString = "[UnitPrice] > 20 AND [UnitPrice] < 30"; string displayText = "[UnitPrice] Is between $20.00 and $30.00"; gridView.Columns["UnitPrice"].FilterInfo = new ColumnFilterInfo(filterString, displayText); }
再次運行應用程序來查看結果,當您單擊Column Filtering組中的Apply Filter按鈕時,網格將根據Unit Price列篩選數據,并在過濾器面板中顯示指定的文本。
返回到設計時,為Locate Row按鈕編寫代碼。
用三個參數調用View的方法:第一個參數指定搜索開始的行句柄;第二個命令將搜索范圍縮小到特定列,第三個命令指定搜索值。Category列使用就地編輯器,它將底層整數值表示為帶有圖像的字符串。值1對應于“飲料”類別,找到行后,通過設置視圖的屬性將焦點移動到該行。
C#
private void btn_LocateRow_ItemClick(object sender, ItemClickEventArgs e) { int rowHandle = gridView.LocateByValue(gridView.FocusedRowHandle + 1, gridView.Columns["Category"], 1); gridView.FocusedRowHandle = rowHandle; }
運行應用程序并單擊Locate Row按鈕,因此網格將關注Category列中最近的包含“Beverages”的行,隨后的單擊遍歷帶有“Beverages”類別的所有行。
關閉應用程序并修改處理程序代碼,以便通過顯示文本定位行。要做到這一點,使用方法并傳遞“Beverages”字符串作為第三個參數。
C#
private void btn_LocateRow_ItemClick(object sender, ItemClickEventArgs e) { int rowHandle = gridView.LocateByDisplayText(gridView.FocusedRowHandle + 1, gridView.Columns["Category"], "Beverages"); gridView.FocusedRowHandle = rowHandle; }
再次運行應用程序并單擊Locate Row按鈕來查看結果。
慧都是?家?業數字化解決?案公司,專注于軟件、?油與?業領域,以深?的業務理解和?業經驗,幫助企業實現智能化轉型與持續競爭優勢。
慧都科技是DevExpress的中國區的合作伙伴,DevExpress作為用戶界面領域的優秀產品,幫助企業高效構建權限管理、數據可視化(如網格/圖表/儀表盤)、跨平臺系統(WinForms/ASP.NET/.NET MAUI)及行業定制解決方案,加速開發并強化交互體驗。
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自:慧都網