三、WPF 全选,反选,以及获取选中行
页面代码

<TextBlock>
<CheckBox Name="cbAllCreate" Click="CbAllCreate_Click">All</CheckBox>
<CheckBox Name="cbInverseCreate" Click="CbInverseCreate_Click">Inverse</CheckBox>
</TextBlock>
<DataGrid Name="dgCreateTable" AutoGenerateColumns="False" VerticalScrollBarVisibility="Visible" Height="210" EnableRowVirtualization="False">
<DataGrid.Columns>
<DataGridCheckBoxColumn Header="Chose" ></DataGridCheckBoxColumn>
<DataGridTextColumn Header="Name" Binding="{Binding}" IsReadOnly="True"></DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
注:如果不加 EnableRowVirtualization="False" 全选反选会有遗漏的情况,所以一定要加上。
代码
/// <summary>
/// 全选
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void CbAllCreate_Click(object sender, RoutedEventArgs e)
{
CbAll(dgCreateTable, cbAllCreate); }
/// <summary>
/// 反选
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void CbInverseCreate_Click(object sender, RoutedEventArgs e)
{
Inverse(dgCreateTable, cbInverseCreate);
}
/// <summary>
/// 全选
/// </summary>
/// <param name="dg"></param>
/// <param name="cb"></param>
void CbAll(DataGrid dg, CheckBox cb)
{
dg.IsEnabled = cb.IsChecked != true; for (int i = ; i < dg.Items.Count; i++)
{
DataGridRow neddrow = (DataGridRow)dg.ItemContainerGenerator.ContainerFromIndex(i);
//获取该行的某列
if (neddrow != null)
{
FrameworkElement objElement = dg.Columns[].GetCellContent(neddrow);
if (objElement != null)
{
CheckBox objChk = (CheckBox)objElement;
objChk.IsChecked = cb.IsChecked;
}
}
}
}
/// <summary>
/// 反选
/// </summary>
/// <param name="dg"></param>
/// <param name="cb"></param>
void Inverse(DataGrid dg, CheckBox cb)
{
// cb.IsChecked = false;
for (int i = ; i < dg.Items.Count; i++)
{
DataGridRow neddrow = (DataGridRow)dg.ItemContainerGenerator.ContainerFromIndex(i);
//获取该行的某列
if (neddrow != null)
{
FrameworkElement objElement = dg.Columns[].GetCellContent(neddrow);
if (objElement != null)
{
CheckBox objChk = (CheckBox)objElement;
objChk.IsChecked = !objChk.IsChecked;
}
}
}
}
获取datagrid中选中的行
List<string> GetDataGridList(DataGrid dg)
{
List<string> list = new List<string>();
for (int i = ; i < dg.Items.Count; i++)
{
DataGridRow neddrow = (DataGridRow)dg.ItemContainerGenerator.ContainerFromIndex(i);
//获取该行的某列
if (neddrow == null)
continue;
FrameworkElement objElement = dg.Columns[].GetCellContent(neddrow);
if (objElement == null)
continue; CheckBox objChk = (CheckBox)objElement;
if (objChk.IsChecked != true)
continue; var obj = dg.Columns[].GetCellContent(neddrow);
if (obj == null)
continue;
var tb = (TextBlock)obj;
if (!string.IsNullOrEmpty(tb.Text))
{
list.Add(tb.Text);
}
}
return list;
}
三、WPF 全选,反选,以及获取选中行的更多相关文章
- ----Juquery复选框全选反选及获取选中值Value
--获取选中值 var pList = ""; $("[name='ckdProd']").each(function () { if ($(this).is( ...
- 基于JQ的多选/全选/反选及获取选中的值
<!-- author:青芒 --> <!DOCTYPE html> <html lang="en"> <head> <met ...
- checkbox、全选反选,获取值
<input id="Chk_All" onclick="CheckAll()" type="checkbox" /> < ...
- JQuery 全选 反选 获取Table 中指定td的元素值
//全选 function initTableCheckbox() { var $thr = $('table thead tr'); var $checkAllTh = $('<th>& ...
- jquery实现全选、全不选、反选、获取选中的所有值总结
HTML 我们的页面上有一个歌曲列表,列出多行歌曲名称,并匹配复选框供用户选择,并且在列表下方有一排操作按钮. <!doctype html> <html> <head& ...
- 全选,反选,获取值ajax提交
//必须先加载jquery //加载 弹出框插件 artdialog http://www.planeart.cn/demo/artDialog/ /****全选反选*开始**/ $(document ...
- jQuery实现的全选、反选和获取当前所有选中的值功能
链接: jQuery实现的全选.反选和获取当前所有选中的值功能 <ul id="list"> <li><label><input type ...
- jQuery 实现复选框全选、反选及获取选中的值
实现复选框全选,反选及获取选中的值: 代码如下: <!doctype html> <html lang="en"> <head> <met ...
- jQuery之标签操作和返回顶部、登录验证、全选反选、克隆示例
一.样式操作 1.JQ中的样式类 somenode.addClass();// 添加指定的CSS类名. somenode.removeClass();// 移除指定的CSS类名. somenode.h ...
随机推荐
- 高性能的数据压缩库libzling-20140324
libzling(https://github.com/richox/libzling,求观看[watch],求星[star],求叉[fork])是一款高性能的数据压缩库,在压缩时间和压缩率上都超过了 ...
- UI的线程问题:单线程原因及更新UI的四种方式
1.UI线程为什么设计为单线程? UI控件的操作不是线程安全的,对于多线程并发访问的时候,如果使用加锁机制会导致: UI控件的操作变得很复杂. 加锁的操作必定会导致效率下降. 所以android系统在 ...
- Javac之关于方法的选择
15.12. Method Invocation Expressions 15.12.1. Compile-Time Step 1: Determine Class or Interface to S ...
- spring使用@Value注解读取.properties文件时出现中文乱码问题的解决
解决办法 在spring中我们常常使用.properties对一些属性进行一个提前配置, spring 在读取*.properties文件时, 默认使用的是asci码, 这时 我们需要对其编码进行转换 ...
- Flume初始
一.Flume是什么 Flume是一个数据,日志收集的一个组件,可以用于对程序,nginx等日志的收集,而且非常简单,省时的做完收集的工作.Flume是一个分布式.可靠.和高可用的海量日志采集聚合和传 ...
- Debian9安装SSH并允许root用户SSH登录
安装SSH # apt install openssh-server openssh-client 启动SSH服务 # /etc/init.d/ssh start 添加SSH开机启动 # update ...
- Python基础(10) - 异常
Python 异常:程序出现了错误而在正常控制流以外采取的行为 Python中常见的异常: 1. NameError:尝试访问一个未声明的变量 >>> something Trace ...
- Java将Excel的列数以字母表示的字符串转换成数字表示
我们知道,在 Excel 中,行数用数字表示,而列数是用字母表示的(如下图所示),有时候需要把它转换成数字来使用,或者把数字转换成字母.(例如使用POI操作Excel) 下面是转换代码,用来进行字母和 ...
- Scrum 冲刺博客第五篇
一.当天站立式会议照片一张 二.每个人的工作 (有work item 的ID),并将其记录在码云项目管理中 昨天已完成的工作 实现题目的生成并将其显示到页面上,设置了背景音乐 今天计划完成的工作 判断 ...
- Ruby(1):入门
安装: 一般来说linux会自动装ruby,可以通过: ruby -v 来查看ruby版本 直接使用ruby命令的话,是用来执行ruby文件的.如果要打开交互式ruby解释器.只需要在控制台输入:ir ...