关闭

WPF中DataGrid 添加checkbox实现全选、多选

6841人阅读 评论(32) 收藏 举报
分类:

   在机房合作项目中,有一个窗体是这样子的

         

    简单介绍一下:就是通过查询出正在上机的学生,可以通过勾选前面的checkbox,选中该行,然后可以进行部分下机和全部下机。如果想要全选,就勾选上图画红框的checkbox。


实现代码:

xaml:

<span style="font-family:KaiTi_GB2312;font-size:24px;"><Grid>
        <DataGrid x:Name="DgLineState" HorizontalAlignment="Left" Margin="30,27,0,0" VerticalAlignment="Top" Height="167" Width="645" FontFamily="Microsoft YaHei Light" FontSize="24"  ItemsSource="{Binding}" AutoGenerateColumns="False" EnableColumnVirtualization="False">
        <DataGrid.Columns>
                <DataGridTemplateColumn>
                    <DataGridTemplateColumn.HeaderTemplate>
                        <DataTemplate>
                            <CheckBox x:Name="CheckAll" Click="CheckAll_Click" Width="42" />
                        </DataTemplate>
                    </DataGridTemplateColumn.HeaderTemplate>
                </DataGridTemplateColumn>
                <DataGridTextColumn Width="15*" Header="卡号" Binding="{Binding cardid}" />
                <DataGridTextColumn Width="15*" Header="教师号" Binding="{Binding userid }" />
                <DataGridTextColumn Width="15*" Header="上机日期" Binding="{Binding onlinedate}"/>
                <DataGridTextColumn Width="15*" Header="上机时间" Binding="{Binding onlinetime}"/>
                <DataGridTextColumn Width="15*" Header="机号" Binding="{Binding computer}"/>
        </DataGrid.Columns >
        </DataGrid></span>

Cs代码:

<span style="font-family:KaiTi_GB2312;font-size:24px;">public class AAA : INotifyPropertyChanged
        {
            private bool isSelected = false;

            public bool IsSelected
            {
                get { return isSelected; }
                set { isSelected = value; GetChanged("IsSelected"); }
            }

            private string name;

            public string Name
            {
                get { return name; }
                set { name = value; GetChanged("Name"); }
            }

            public event PropertyChangedEventHandler PropertyChanged;

            private void GetChanged(string Name)
            {
                if (PropertyChanged != null)
                {
                    PropertyChanged(this, new PropertyChangedEventArgs(Name));
                }
            }

           
        }

        private void CheckAll_Click(object sender, RoutedEventArgs e)
        {
            foreach (var item in DgLineState.Items)
            {
                DataGridTemplateColumn templeColumn = DgLineState.Columns[0] as DataGridTemplateColumn;
                FrameworkElement fwElement = DgLineState.Columns[0].GetCellContent(item);

                if (fwElement != null)
                {
                    CheckBox cBox = templeColumn.CellTemplate.FindName("cb", fwElement) as CheckBox;
                    if (cBox.IsChecked == true)
                    {
                        cBox.IsChecked = false;
                    }
                    else
                    {
                        if (cBox != null)
                        {
                            cBox.IsChecked = true;
                        }
                        else
                        {
                            cBox.IsChecked = false;
                        }
                    }

                }

            }
        }</span>

添加一个viewmodel类

<span style="font-family:KaiTi_GB2312;font-size:24px;">using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.ComponentModel;
namespace JfCooperate.一般用户
{
   public  class viewmodel:INotifyPropertyChanged
    {
        public event PropertyChangedEventHandler PropertyChanged;

        private void INotifyPropertyChanged(string name)
        {
            if (PropertyChanged != null)
            {
                PropertyChanged(this, new PropertyChangedEventArgs(name));
            }
        }

        private int xh;

        public int Xh
        {
            get { return xh; }
            set { xh = value; }
        }

        private string name;

        public string Name
        {
            get { return name; }
            set
            {
                name = value;
                INotifyPropertyChanged("Name");
            }
        }

        private int age;

        public int Age
        {
            get { return age; }
            set
            {
                age = value;
                INotifyPropertyChanged("Age");
            }
        }

        private bool isSelected;

        public bool IsSelected
        {
            get { return isSelected; }
            set
            {
                isSelected = value;
                INotifyPropertyChanged("IsSelected");
            }
        }
    }
}
</span>




2
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

WPF DataGrid表头Checkbox 全选与全反选

WPF 在使用DataGrid展示数据的时候经常会使用到checkbox列,特别是id列     例如下面这种效果:          WPF 要实现DataGrid checkbox全选与全反选,方...
  • aojiancc2
  • aojiancc2
  • 2017-02-09 16:12
  • 2671

WPF教程(十八)复选框

复选框用于勾选或者勾掉某一个选项,在后台代码中表现为一个布尔型值。还是直接来看代码吧,更形象: <Window x:Class="WpfTutorialSamples.Basic_controls.C...
  • seanbei
  • seanbei
  • 2016-10-18 20:04
  • 4074

在DataGrid里面使用CheckBox的例子

在DataGrid使用CheckBox通常都使用客户端的控件,这样可以把值帮定到CheckBox里面,在服务器端通过string strID = Request["cbID"];获得客户端所选择的值。...
  • conichiwa
  • conichiwa
  • 2004-10-16 11:34
  • 794

全选DataGrid里的复选框

我们经常会在DataGrid里选择一组数据,然后批量操作,如果要全部操作的话需要一个全选的功能,如果你用这个全选按钮的服务器端事件来让DataGrid里复选框的全选的话,会多一次向服务器的回传,我们可...
  • cmoremore
  • cmoremore
  • 2005-04-04 10:22
  • 838

wpf开发控件多选实现

1 怎样把TreeView中所以节点全部展开?   不同于Windows Forms,当前WPF版本没有提供一个直接的方法可以把TreeView控件所有的节点都展开。一般来说,在WPF中有两种方...
  • mzhhe1
  • mzhhe1
  • 2012-09-06 15:30
  • 1308

WPF之CheckBox组的全选设计

最近看项目中的一个Check组的全选设计,感觉比较搓,看着不爽,于是花了点时间重新重构了下。涉及知识点:1.枚举的Flags特性;2.位运算。         先看看界面:     ...
  • pfe_Nova
  • pfe_Nova
  • 2013-09-30 14:43
  • 4617

向dataGrid中添加checkBox

  • 2017-08-23 20:41
  • 64KB
  • 下载

easyui datagrid checkbox

easyui datagrid 中本身有checkbox列的属性设置,在使用中发现分页的时候这个checkbox的选择很有问题,比如在第二页点了全选,到第三页的时候,竟然也是选择状态,并且还不是所有选...
  • wyljz
  • wyljz
  • 2015-12-23 11:11
  • 2378

WPF datagrid 全选全不选

前端:         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"    &...
  • u011296732
  • u011296732
  • 2016-07-21 17:08
  • 626

WPF中DataGrid实现全选

方法一:使用模板列 前台代码如下 后台实现如下  DataGridTemplateColumn templeColum...
  • asciil
  • asciil
  • 2016-11-22 21:18
  • 1384
    个人资料
    • 访问:132379次
    • 积分:10959
    • 等级:
    • 排名:第1713名
    • 原创:181篇
    • 转载:3篇
    • 译文:0篇
    • 评论:3885条
    博客专栏