wpf mvvm datagrid資料過濾

2021-08-29 18:14:30 字數 867 閱讀 3573

datagrid資料過濾,你可以通過設定rowstyle屬性,通過將visibility繫結到viewmodel層的屬性來控制是否可見,比如:

這裡我利用datagridrowvisibilityconverter這個轉換器,當currenttype=「all」時所有的都顯示,當currenttype不是all時,要求datagrid資料來源裡面某個資料的type值和currenttype一致,才顯示。

但是這樣做有乙個問題,就是當行的可見性變更後,資料並不會重刷,datagrid的row索引還是老的,需要手動重新整理,但是我們是mvvm模式,沒法手動重新整理datagrid的資料。我暫時還沒找到解決這個問題的方法。

針對過濾,其實官方提供了乙個解決方案,就是利用icollectionview。該介面包含了乙個refresh方法,同時包含乙個filter屬性,該屬性是用來過濾的,使用的時候,後台資料這麼寫:

public icollectionview viewsource

在viewmodel的構造方法裡面這麼寫:

viewsource = system.windows.data.collectionviewsource.getdefaultview(globaldata.statuslist);

viewsource.filter = new predicate(onfiltermovie);

}bool onfiltermovie(object item)

然後currenttype屬性這麼寫,當變更時,呼叫viewsource的refresh方法重新整理一次資料

private string currenttype = "all";

public string currenttype}}

而前端繫結還按照普通繫結的方法寫就可以了:

mysql的filter mysql資料過濾

where子句 在我們使用資料庫時,通常只會根據特定條件提取表資料的子集。只檢索所需資料需要指定搜尋條件 search criteria 搜尋條件也稱為過濾條件 filtercondition select name,age from tab1 where age 18 返回age 18的行 whe...

mysql資料庫存過例項

create procedure bb test updatedb begin declare test i int default 0 declare test char varchar 255 default test insertdb while test i 50 do set test c...

大資料踩過的坑 Hive insert

我在對hive表資料清洗後,使用了如下sql將結果集插入到新錶中 insert into db name.table name 1 col 1,col2,col3 with temp table 1 as select id,col 2 from db name.table name 2 where...