原創(chuàng)|使用教程|編輯:龔雪|2022-08-18 10:56:36.340|閱讀 170 次
概述:本文主要為大家介紹如何使用Telerik UI for WinForms中的RadFilterView組件來過濾數(shù)據(jù),歡迎下載產(chǎn)品體驗(yàn)~
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關(guān)鏈接:
您是否希望應(yīng)用程序能夠擁有過濾選項(xiàng),來幫助用戶快速過濾?現(xiàn)在可以使用Telerik UI for WinForms全新的RadFilterView控件,它可以幫您做到!
RadFilterView是一個控件,它允許您的用戶使用直觀的UI輕松過濾數(shù)據(jù),它旨在與我們最流行的控件一起使用,如 RadGridView、RadListView、RadTreeView 等。您可以簡單地設(shè)置 RadFilterView 的 AssociatedControl 屬性,當(dāng)用戶更改某些過濾器時,關(guān)聯(lián)的控件將立即被過濾。
如果您不想在每次用戶進(jìn)行單個更改時觸發(fā)關(guān)聯(lián)控件的過濾,可以更改FilteringMode屬性。
this.radFilterView1.FilteringMode = FilteringMode.Programmatically;
該控件也可以獨(dú)立工作(沒有關(guān)聯(lián)的控件),在這種模式下,需要設(shè)置DataSource屬性,以便為控件提供數(shù)據(jù)。
當(dāng)用戶更改任何類別中的值時,將觸發(fā)控件的 FilterChanged 事件。 在事件處理程序中,您可以使用 FilterDescriptors 的集合,它用于過濾我們的大多數(shù)數(shù)據(jù)控件,或者 RadFilterView.Expression 屬性,它返回一個類似 SQL 查詢的字符串:
"[FirstName] IN ('Bruce','Chris') AND [SSN] >= 2882255 AND [Married] = True"
它是如何工作的? 設(shè)置 DataSource 時,過濾視圖控件為相應(yīng)數(shù)據(jù)的每一列創(chuàng)建一個類別,然后遍歷每條記錄并存儲值,根據(jù)列的數(shù)據(jù)類型,控件創(chuàng)建不同類型的類別:
這些類別提供了多種選項(xiàng),您可以在其中將整個類別替換為自定義類別、自定義類別或僅更改值。
現(xiàn)在讓我們看一下綁定到文本數(shù)據(jù)的過濾器視圖,以下是默認(rèn)創(chuàng)建的文本類別的外觀:
如您所見,類別標(biāo)題文本不是用戶友好的,因?yàn)樗c源列名稱相同,可以在 CategoryCreating 或 CategoryCreated 事件中更改類別顯示名稱。
private void RadFilterView1_CategoryCreated(object sender, FilterViewCategoryCreatedEventArgs e) { if (e.Category.PropertyName == "product_name") { e.Category.DisplayName = "Product Name"; } }
可以看到的另一件事是,這些值與它們在數(shù)據(jù)源中出現(xiàn)的順序相同。 當(dāng)我們有大量文本值時,用戶可以更輕松地瀏覽按字母排序的數(shù)據(jù),對值重新排序的正確位置是 CategoryCreating 事件,在這里您甚至可以替換整個類別,這是如何對值進(jìn)行排序的代碼示例:
private void RadFilterView1_CategoryCreating(object sender, FilterViewCategoryCreatingEventArgs e) { List<object> values = e.Values.ToList(); values.Sort(); e.Values = values; }
為了使其更具可讀性,我們可以將每個產(chǎn)品的第一個字母大寫。 這可以在文本類別的 ItemCreated 事件中完成并更改項(xiàng)目的文本(使用區(qū)域性 TextInfo 的 ToTitleCase 方法),附加到此事件的正確位置再次位于 CategoryCreating 事件中。
private void RadFilterView1_CategoryCreating(object sender, FilterViewCategoryCreatingEventArgs e) { List<object> values = e.Values.ToList(); values.Sort(); e.Values = values; FilterViewTextCategoryElement category = e.Category as FilterViewTextCategoryElement; category.ItemCreated += this.Category_ItemCreated; } private void Category_ItemCreated(object sender, FitlerViewTextCategoryItemCreatedEventArgs e) { TextInfo info = CultureInfo.CurrentCulture.TextInfo; string newText = info.ToTitleCase(e.Item.Text); e.Item.Text = newText; }
最后的結(jié)果:
Telerik UI for WinForms擁有適用Windows Forms的110多個令人驚嘆的UI控件。所有的UI for WinForms控件都具有完整的主題支持,可以輕松地幫助開發(fā)人員在桌面和平板電腦應(yīng)用程序提供一致美觀的下一代用戶體驗(yàn)。
Telerik_KendoUI產(chǎn)品技術(shù)交流群:726377843 歡迎一起進(jìn)群討論
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自:慧都網(wǎng)