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

原创 2016年07月26日 14:41:48

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

         

    简单介绍一下:就是通过查询出正在上机的学生,可以通过勾选前面的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>




版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

wpf datagrid 加入checkbox

直接代码,不废话 http://schemas.microsoft.com/wpf/2008/toolkit" Grid.Row="1">
  • Alsmile
  • Alsmile
  • 2011年07月08日 17:45
  • 10540

WPF DataGrid表头Checkbox 全选与全反选

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

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

wpf中为DataGrid添加checkbox支持多选全选

项目中用到DataGrid, 需要在第一列添加checkbox, 可以多选、全选。 其中涉及的概念DataTemplate, DataGridCellStyle, DataGridCellContr...

DataGrid中的添加CheckBox实现全选/单选【原创】

首先先添加个模版列,然后编辑模版列,在里面拖2个HtmlControl的CheckBox,HeaderTemplate中的CheckBox的ID为:chkHeader; ItemTemplate中的C...

Flex中DataGrid实现列(包括头部)中加入CheckBox全选功能 几种实现方法

 在DataGrid中实现列中加入CheckBox这种用法很常见,项目中也经常会用到,在网上搜了下基本就是实现itemRender.但是 感觉网上提供的实现上好些地方都是多余的 经过自己的改造感...

WPF 问题总结之 CheckBox 全选

最近在做WPF项目,遇到很多问题。 1,DataGrid 全选 Checkbox                                      RowDetailsV...
  • wl076
  • wl076
  • 2013年03月28日 08:59
  • 7744

WPF中DataGrid实现全选

方法一:使用模板列 前台代码如下 后台实现如下  DataGridTemplateColumn templeColum...
  • asciil
  • asciil
  • 2016年11月22日 21:18
  • 1176

使用Struts2和jQuery EasyUI实现简单CRUD系统(六)——复选框进行多选删除操作

使用Struts2和jQuery EasyUI实现简单CRUD系统(三)——复选框进行多选删除操作
  • iaiti
  • iaiti
  • 2014年11月12日 20:33
  • 13855
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:WPF中DataGrid 添加checkbox实现全选、多选
举报原因:
原因补充:

(最多只允许输入30个字)