三、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 ...
随机推荐
- Guava源码解析之EventBus
最近看Elastic-Job源码,看到它里面实现的任务运行轨迹的持久化,使用的是Guava的AsyncEventBus,一个内存级别的异步事件总线服务,实现了简单的生产-消费者模式,从而在不影响任务执 ...
- GitHub注册和Git安装
一.注册GitHub GitHub官方地址:https://github.com. 在浏览器中打开GitHub网址,通过首页进行注册,如下图所示. 二.安装Git Git官方下载地址:http://g ...
- SpringBoot集成WebSocket【基于STOMP协议】进行点对点[一对一]和广播[一对多]实时推送
原文详细地址,有点对点,还有广播的推送:https://blog.csdn.net/ouyzc/article/details/79884688 下面是自己处理的一些小bug 参考原文demo,结合工 ...
- 全网最全的Windows下Anaconda2 / Anaconda3里正确下载安装Theano(图文详解)
不多说,直接上干货! Theano的安装教程目前网上一搜很多,前几天折腾了好久,终于安装成功了Anaconda3(Python3)的Theano,嗯~发博客总结并分享下经验教训吧. 渣电脑,显卡用的是 ...
- python-cgi-demo
简单的Python CGI 在linux平台实现注意:路径是以当前路径为根目录 ,Python文件一般放在/cgi-bin/目录下在linux命令行运行:python -m CGIHTTPServ ...
- C 扩展库 - mysql API CRUD
CRUD table create table if not exists `student` ( `id` int auto_increment, `name` varchar(16) not nu ...
- 常见的接口与类 -- Comparator
接口Comparator 1.1 前面我们讲过Java提供了一个用于比较的接口Comparable,提供了一个比较的方法,所有实现该接口的类,都动态的实现了该比较方法.实际上Java中除了比较一个接口 ...
- 第十四章、Linux 账号管理与 ACL 权限配置
1. Linux 的账号与群组 1.1 使用者标识符: UID 与 GID 1.2 使用者账号:/etc/passwd 文件结构, /etc/shadow 文件结构 1.3 关于群组: /etc/gr ...
- ++i? i++? i+=1? i=i+1? 何必纠结?
前言 今天在牛客上看面经,看到一个问题:num++; num+=1; num = num +1; 哪个效率最高? 自从学习C语言开始,我就在纠结for语言应该写i++,还是++i,其实这个问题,可以通 ...
- laravel数据迁移
创建数据库迁移: php artisan make:migration create_表名_table 回车后就会创建迁移版本 回滚数据库迁移: php artisan migrate 会将数据按 ...