zoukankan      html  css  js  c++  java
  • WPF datagrid筛选行显影

    <!---------xaml------->
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition/>
            <RowDefinition Height="30"/>
        </Grid.RowDefinitions>
        <DataGrid x:Name="lstPeople" Width="200">
            <DataGrid.Columns>
                <DataGridTextColumn Header="className" Width="50" Binding="{Binding className}"/>
                <DataGridTextColumn Header="Name" Width="80" Binding="{Binding Name}"/>
                <DataGridTextColumn Header="Age" Width="50" Binding="{Binding Age}"/>
                <DataGridTextColumn Header="Sex" Width="80" Binding="{Binding Sex}" />
                <DataGridTextColumn Header="Email" Width="100" Binding="{Binding Email}"/>
            </DataGrid.Columns>
        </DataGrid>
        <StackPanel Orientation="Horizontal" Grid.Row="1">
            <Button x:Name="btnSortbylast" Content="Sort By LastName" Click="btnSortbylast_Click" />
            <Button x:Name="btnSortbydob" Content="Sort By DOB" Click="btnSortbydob_Click" />
            <TextBox Text="1" Width="30" x:Name="filterClass"/>
            <Button x:Name="btnFilter" Content="筛选班级" Click="btnFilter_Click" />
        </StackPanel>
    </Grid>
    

      

    // ----------cs------------
    public MainWindow()
    {
        InitializeComponent();
        InitData();
    }
    
    private void InitData()
    {
        for (int i = 0; i < 30; i++)
        {
            people.Add(new Person() { Name = "学生" + i, Email = "123333@.abc.com", Sex = "男", Age = "10", className = i.ToString("00").Substring(0, 1) });
        }
                
        lstPeople.ItemsSource = people;
    }
    
    private Collection<Person> people = new Collection<Person>();
    private bool isfiltered = false;
    
    private void btnSortbylast_Click(object sender, RoutedEventArgs e)
    {
        //CollectionView, 表示用于分组、排序、筛选和导航数据集合的视图。
        CollectionView cv = (CollectionView)CollectionViewSource.GetDefaultView(lstPeople.ItemsSource);
        cv.SortDescriptions.Clear();
        cv.SortDescriptions.Add(new SortDescription("LastName", ListSortDirection.Ascending));
    }
    
    private void btnSortbydob_Click(object sender, RoutedEventArgs e)
    {
        CollectionView cv = (CollectionView)CollectionViewSource.GetDefaultView(lstPeople.ItemsSource);
        cv.SortDescriptions.Clear();
        cv.SortDescriptions.Add(new SortDescription("Dateofbirth", ListSortDirection.Descending));
    }
    string className = "";
    private void btnFilter_Click(object sender, RoutedEventArgs e)
    {
        CollectionView cv = (CollectionView)CollectionViewSource.GetDefaultView(lstPeople.ItemsSource);
        if (isfiltered)
        {
            cv.Filter = null;
            isfiltered = false;
        }
        else
        {
            className = filterClass.Text;
            cv.Filter = new Predicate<object>(FilterBySmith);
            isfiltered = true;
        }
    }
    
    private bool FilterBySmith(object item)
    {
        Person p = item as Person;
        return p.className.Trim() == className;
    }
    
    // ------------Person-----------
    public class Person
    {
        public string Name { get; set; }
        public string Age { get; set; }
        public string Sex { get; set; }
        public string Email { get; set; }
        public string className { get; set; }
    }
    

      

  • 相关阅读:
    Jmeter 脚本录制
    Scrapy 爬虫模拟登陆的3种策略
    Scrapy Shell
    Ipython
    XPath helper
    python3 接口测试数据驱动之操作mysql数据库
    Pandas 基础(17)
    Pandas 基础(16)
    在 Laravel 项目中使用 Elasticsearch 做引擎,scout 全文搜索(小白出品, 绝对白话)
    Pandas 基础(15)
  • 原文地址:https://www.cnblogs.com/zbfamily/p/12838053.html
Copyright © 2011-2022 走看看