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; }
    }
    

      

  • 相关阅读:
    Essential C++ 3.1 节的代码练习——哨兵方式
    Essential C++ 3.1 节的代码练习——指针方式
    《搞不定人,你如何带团队?》读书记录
    selenium+python,解决selenium弹出新页面,无法定位元素的问题(报错:Unable to locate element:元素)
    selenium 元素(class_name、link_text、css_selector)定位方法
    selenium+python+eclipse 实现 “问卷星”网站,登录与检查登录示例!
    selenium IDE中log的保存与查看方法
    selenium IDE工具页面介绍!
    selenium IDE 使用方法整理
    selenium IDE的3种下载安装方式
  • 原文地址:https://www.cnblogs.com/zbfamily/p/12838053.html
Copyright © 2011-2022 走看看