wpf GridControl selectAll UnSelect
<Window x:Class="WpfApplication1.GridControlView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:dxg="http://schemas.devexpress.com/winfx/2008/xaml/grid"
xmlns:dx="http://schemas.devexpress.com/winfx/2008/xaml/core"
xmlns:dxe="http://schemas.devexpress.com/winfx/2008/xaml/editors"
Title="GridControlView" >
<Grid>
<StackPanel>
<Button Click="BtnInvert_Click">Invert selection</Button>
<Button Click="BtnGetSelected_Click">Get selection</Button>
<dxg:GridControl x:Name="grid" CustomUnboundColumnData="grid_CustomUnboundColumnData" Height="" ItemsSource="{Binding List}">
<dxg:GridControl.Columns>
<dxg:GridColumn FieldName="Id" />
<dxg:GridColumn FieldName="Number" />
<dxg:GridColumn FieldName="Selected" UnboundType="Boolean" AllowSorting="False">
<dxg:GridColumn.CellTemplate>
<DataTemplate>
<dxe:CheckEdit IsChecked="{Binding Data.Selected}" HorizontalAlignment="Center" VerticalAlignment="Center" />
</DataTemplate>
</dxg:GridColumn.CellTemplate>
</dxg:GridColumn>
</dxg:GridControl.Columns>
<dxg:GridControl.View>
<dxg:TableView x:Name="view" AutoWidth="True" />
</dxg:GridControl.View>
</dxg:GridControl>
</StackPanel>
</Grid>
</Window>
GridControlView.xaml
/// <summary>
/// GridControlView.xaml 的交互逻辑
/// </summary>
public partial class GridControlView : Window
{
public GridControlView()
{
InitializeComponent();
//Dxsl.LoginManage.ViewModels.LookupControlViewModel viewModel = new Dxsl.LoginManage.ViewModels.LookupControlViewModel(); //this.DataContext = viewModel;
DataContext = data;
} TestData data = new TestData();
SelectionHelper<Guid> selectionHelper = new SelectionHelper<Guid>(); /// <summary>
/// Grid触发事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void grid_CustomUnboundColumnData(object sender, GridColumnDataEventArgs e)
{
if (e.Column.FieldName != "Selected") return;
Guid key = (Guid)e.GetListSourceFieldValue("Id");
if (e.IsGetData)
e.Value = selectionHelper.GetIsSelected(key);
if (e.IsSetData)
selectionHelper.SetIsSelected(key, (bool)e.Value);
}
/// <summary>
/// 全选或者反选
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void BtnInvert_Click(object sender, RoutedEventArgs e)
{
for (int i = ; i < data.List.Count; i++)
{
int rowHandle = this.grid.GetRowHandleByListIndex(i);
bool newIsSelected = !selectionHelper.GetIsSelected(data.List[i].Id);
grid.SetCellValue(rowHandle, "Selected", newIsSelected);
}
}
/// <summary>
/// 获取选中项
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void BtnGetSelected_Click(object sender, RoutedEventArgs e)
{
string caption = string.Format("Selected rows (Total: {0})", selectionHelper.GetSelectionCount());
MessageBox.Show(selectionHelper.GetSelectedKeysAsString(), caption);
}
}
GridControlView
/// <summary>
/// 选择帮助类
/// </summary>
/// <typeparam name="KeyType">类型</typeparam>
public class SelectionHelper<KeyType>
{
/// <summary>
/// 选中集合字典
/// </summary>
Dictionary<KeyType, bool> selectedValues = new Dictionary<KeyType, bool>();
/// <summary>
/// 获取key是否被选中
/// </summary>
/// <param name="key">key 值</param>
/// <returns></returns>
public bool GetIsSelected(KeyType key)
{
//声明是否选择变量,默认为false
bool isSelected;
if (selectedValues.TryGetValue(key, out isSelected))
return isSelected;
return false;
}
/// <summary>
/// 设置选中项的值
/// </summary>
/// <param name="key">key 值</param>
/// <param name="value">true or false</param>
public void SetIsSelected(KeyType key, bool value)
{
if (value)
selectedValues[key] = value;
else
selectedValues.Remove(key);
}
/// <summary>
/// 获取集合字典中的选中项
/// </summary>
/// <returns></returns>
public List<KeyType> GetSelectedKeys()
{
List<KeyType> list = new List<KeyType>();
//遍历集合
foreach (KeyType key in selectedValues.Keys)
list.Add(key);
return list;
}
/// <summary>
/// 获取集合中项 加入StringBuilder 仅测试用
/// </summary>
/// <returns></returns>
public string GetSelectedKeysAsString()
{
List<KeyType> list = GetSelectedKeys();
StringBuilder str = new StringBuilder();
for (int i = ; i < list.Count; i++)
str.AppendLine(list[i].ToString());
return str.ToString();
}
/// <summary>
/// 获取选择数量
/// </summary>
/// <returns></returns>
public int GetSelectionCount()
{
return selectedValues.Count;
}
}
SelectionHelper
public class TestData
{
public List<TestDataItem> List { get; private set; }
public TestData()
{
List<TestDataItem> list = new List<TestDataItem>();
for (int i = ; i < ; i++)
{
list.Add(new TestDataItem() { Id = Guid.NewGuid(), Number = i });
}
List = list;
}
}
TestData
public class TestDataItem
{
public Guid Id { get; set; }
public int Number { get; set; }
}
TestDataItem


wpf GridControl selectAll UnSelect的更多相关文章
- WPF gridcontrol 后台代码清除过滤筛选条件
WPF 后台清除gridcontrol过滤筛选条件: ColumnName:列名 user_GridControl:gridcontrol控件名 user_GridControl.ClearColum ...
- WPF GridControl单元格值与过滤值相同时,改变单元格背景色
DataTrigger的Value不可绑定,所以我们需要用MultiBinding来实现这个功能. <dxg:TableView.CellStyle> <Style TargetTy ...
- DevExpress v17.2新版亮点—WPF篇(二)
用户界面套包DevExpress v17.2终于正式发布,本站将以连载的形式为大家介绍各版本新增内容.本文将介绍了DevExpress WPF v17.2 新的Hamburger Menu.Sched ...
- 【WPF】GridControl的使用
一.前言 在WPF中我们常常使用DataGrid来显示数据,在Dev中也有一个类似的控件—GridControl. 二.范例 <dxg:GridControl Grid.Row=" I ...
- WPF界面开发:DevExpress WPF在GridControl中固定行时处理时刻
DevExpress广泛应用于ECM企业内容管理. 成本管控.进程监督.生产调度,在企业/政务信息化管理中占据一席重要之地.通过DevExpress WPF Controls,您能创建有着强大互动功能 ...
- WPF datagrid/gridcontrol 中选中多行,复制粘贴到excel或其他文本编辑器中
wpf中 data grid 开启自带的选中,然后复制,可以到excel中直接粘贴,在某些业务场景中很实用,方便.开启也很简单: SelectionMode="Row" 加上这个, ...
- [Irving] Wpf DevexPress GridControl 获取选中行
WPF前台绑定事件代码: <RelayAction TargetControl="{Binding ElementName=GCInstoragePart}" MethodN ...
- 为WPF版的GridControl控件添加行序号功能
废话不多数,先上效果图和代码: 包装GridControl控件 cs using DevExpress.Xpf.Data; using DevExpress.Xpf.Grid; using Syste ...
- WPF DEV gridcontrol 自定义计算列(TotalSummary)
/// <summary> /// 自定义计算列 /// </summary> /// <param name="sender"></pa ...
随机推荐
- 转 救命的教程 anaconda下载安装包网络错误的解决办法
折腾了一天,终于找到了这个解决办法 https://blog.csdn.net/sinat_29315697/article/details/80516498
- 使用虚拟环境来管理python的包
1.背景 在开发python项目的过程中,我们会用到各种各样的包,我们使用pip来管理包,请看下图我们刚装好python解释器时已安装的包: 但是随着我们疯狂的使用pip install xxx后,系 ...
- pandas实践——美国人口分析
1.导入文件,并查看数据样本 abbr = pd.read_csv("./state-abbrevs.csv")areas =pd.read_csv("./state-a ...
- Docker 镜像&仓库 获取及推送镜像
docker查看.删除镜像 docker镜像存储位置: /var/lib/docker 查看docker信息也可以查看保存位置 docker info 1.列出镜像 docker images -aa ...
- 【python学习】新手基础程序练习(一)
首先得先编一下程序员必须编的程序——Hello World……(这应该是程序员情结...) #coding=utf-8 #Version:python3.7.0 #Tools:Pycharm 2017 ...
- python3与python2的编码问题
在讲这个问题之前,我们先说说unicode的工作原理.unicode包含了跟全球所有国家编码的映射关系,就是不管你用哪个国家的编码,unicode都能找到它在unicode中的编码.那么无论你用什么编 ...
- AOP面向切面编程笔记
1.AOP概念:Aspect Oriented Programming 面向切面编程 2.作用:本质上来说是一种简化代码的方式 继承机制 封装方法 动态代理 …… 3.情景举例 ①数学计算器接口[Ma ...
- $(MAKE) , make命令
make 定义了很多默认变量,像常用的命令或者是命令选项之类的,什么CC啊,CFLAGS啊之类.$(MAKE)就是预设的 make 这个命令的名称(或者路径).make -p 可以查看所有预定义的变量 ...
- meta-data
<meta-data android:name="string" android:resource="resource specification" ...
- bootstrap 弹出框(Popover)插件 修改title等属性选项值
<button type="button" class="btn btn-default ht-btn" data-toggle="popove ...