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 ...
随机推荐
- Find the Longest Word in a String-freecodecamp算法题目
Find the Longest Word in a String(找出最长单词) 要求 在句子中找出最长的单词,并返回它的长度 函数的返回值应该是一个数字. 思路 用.split(' ')将句子分隔 ...
- PHPCompatibility检测php版本语法兼容
直接上步骤: cd /datas/htdocs/ mkdir PHPCompatibility cd PHPCompatibility/ curl -s http://getcomposer.org/ ...
- leepcode作业解析-5-21
25.Nim游戏 你和你的朋友,两个人一起玩 Nim 游戏:桌子上有一堆石头,每次你们轮流拿掉 1 - 3 块石头. 拿掉最后一块石头的人就是获胜者.你作为先手. 你们是聪明人,每一步都是最优解. 编 ...
- matplotlib学习记录 三
# 绘制自己和朋友在各个年龄的女友数量的折线图 from matplotlib import pyplot as plt # 让matplotlib能够显示中文 plt.rcParams['font. ...
- JAVA基础篇—文件上传下载
/index.jsp <%@ page language="java" contentType="text/html; charset=UTF-8" pa ...
- LeetCode(143) Reorder List
题目 Given a singly linked list L: L0→L1→-→Ln-1→Ln, reorder it to: L0→Ln→L1→Ln-1→L2→Ln-2→- You must do ...
- debian使用ibus
$ sudo apt-get install ibus ibus-pinyin 点击右上角的键盘图标,设置拼音输入法
- UVa 1354 枚举子集 Mobile Computing
只要枚举左右两个子天平砝码的集合,我们就能算出左右两个悬挂点到根悬挂点的距离. 但是题中要求找尽量宽的天平但是不能超过房间的宽度,想不到要怎样记录结果. 参考别人代码,用了一个结构体的vector,保 ...
- Python属性描述符(一)
描述符是对多个属性运用相同存取逻辑的一种方式,,是实现了特性协议的类,这个协议包括了__get__.__set__和__delete__方法.property类实现了完整的描述符协议.通常,可以只实现 ...
- dubbo doc入门文档
dubbo document http://dubbo.apache.org/zh-cn/docs/user/references/xml/dubbo-protocol.html