Silverlight 中DataGrid中全选与非全选问题
问题:当点击全选时,全选所有的复选框,但是滚动屏幕时,却复选框就会取消选中
一、解决方法(将要展示的实体数据模型添加bool属性,在数据绑定时添加click时间,盘带选中的状态,就可以了)
1. xaml
<sdk:DataGrid x:Name="UserDG" AutoGenerateColumns="False">
<sdk:DataGrid.Columns>
<sdk:DataGridTemplateColumn >
<sdk:DataGridTemplateColumn.HeaderStyle>
<Style TargetType="sdk:DataGridColumnHeader">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="sdk:DataGridColumnHeader">
<Grid Height="" VerticalAlignment="Center">
<Border BorderBrush="#FF71A2F2" BorderThickness="" Height="" VerticalAlignment="Top" Margin="0,-1">
<Border.Background>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.477,0">
<GradientStop Color="#FFF4EEEE" Offset=""/>
<GradientStop Color="White" Offset=""/>
<GradientStop Color="#FF70C3E9" Offset="0.092"/>
<GradientStop Color="#FF77BFE0" Offset="0.933"/>
<GradientStop Color="#FFD0E3EB" Offset="0.486"/>
</LinearGradientBrush>
</Border.Background>
</Border>
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center">
<ContentPresenter.Content>
<CheckBox Margin="7,2" x:Name="cbSelectAll" Click="RefreshShow"></CheckBox>
</ContentPresenter.Content>
</ContentPresenter>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style> </sdk:DataGridTemplateColumn.HeaderStyle>
<sdk:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox x:Name="CK" HorizontalAlignment="Center" VerticalAlignment="Center" Tag="{Binding LoginNM}" Click="ck_Checked" IsChecked="{Binding IsCheck,Mode=TwoWay}"/>
</DataTemplate>
</sdk:DataGridTemplateColumn.CellTemplate>
</sdk:DataGridTemplateColumn>
<sdk:DataGridTemplateColumn Header="序号" >
<sdk:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Padding="" HorizontalAlignment="Center"/>
</DataTemplate>
</sdk:DataGridTemplateColumn.CellTemplate>
</sdk:DataGridTemplateColumn>
<sdk:DataGridTextColumn Header="Name" Binding="{Binding Name}"/>
<sdk:DataGridTextColumn Header="Age" Binding="{Binding Age}"/>
<sdk:DataGridTextColumn Header="Email" Binding="{Binding Email}"/>
</sdk:DataGrid.Columns>
</sdk:DataGrid>
2. 在要展示的是实体数据模型里添加 bool类型的属性,并绑定到xaml页面中
private bool isCheck; public bool IsCheck
{
get { return isCheck; }
set { isCheck = value; NotifyPropertyChanged("IsCheck"); }
}
3.xaml.cs后台代码如下
//添加行号
private void InitList()
{ UserList.LoadingRow += (o, e) =>
{
(UserList.Columns[].GetCellContent(e.Row) as TextBlock).Text = (e.Row.GetIndex() + ).ToString();
};
}
#region 全选/不全选解决方法
private void RefreshShow(object sender, System.Windows.RoutedEventArgs e)
{
_selectList.Clear();
CheckBox quxuan = (CheckBox)sender;
if (this.UserList.ItemsSource != null)
{
if (quxuan.IsChecked.Value)
{
foreach (var item in userinfos)
{
item.IsCheck = true;
_selectList.Add(item.LoginNM);
}
#region
//foreach (var obj in this.UserList.ItemsSource)
//{
// var col = this.UserList.Columns[0].GetCellContent(obj);
// if (col != null)
// {
// //下面就是获取选中或取消的CheckBox
// CheckBox cb1 = this.UserList.Columns[0].GetCellContent(obj).FindName("CK") as CheckBox;
// var id = (string)cb1.Tag;
// cb1.IsChecked = quxuan.IsChecked; // }
//}
#endregion
}
else
{
foreach (var item in userinfos)
{
item.IsCheck = false;
_selectList.Remove(item.LoginNM);
} }
}
else
{
MessageBox.Show("当前没有数据可选择!");
quxuan.IsChecked = false;
return;
} }
private List<string> _selectList = new List<string>();
private void ck_Checked(object sender, RoutedEventArgs e)
{
foreach (var item in userinfos)
{
if (item.IsCheck)
{
if (!_selectList.Contains(item.LoginNM))
{
_selectList.Add(item.LoginNM);
}
}
else
{
_selectList.Remove(item.LoginNM);
}
} }
#endregion
二、解决方法(在datagrid数据展示外面添加滚动条<ScrollViewer Grid.Row="1" >,后台添加相应的方法,就可以了)
<ScrollViewer Grid.Row="" >
<sdk:DataGrid x:Name="UserDG" AutoGenerateColumns="False">
<sdk:DataGrid.Columns>
<sdk:DataGridTemplateColumn Header="Id">
<sdk:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox x:Name="cb" Tag="{Binding Id}"/>
</DataTemplate>
</sdk:DataGridTemplateColumn.CellTemplate>
</sdk:DataGridTemplateColumn>
<sdk:DataGridTextColumn Header="Name" Binding="{Binding Name}"/>
<sdk:DataGridTextColumn Header="Age" Binding="{Binding Age}"/>
<sdk:DataGridTextColumn Header="Email" Binding="{Binding Email}"/>
</sdk:DataGrid.Columns>
</sdk:DataGrid>
</ScrollViewer>
Silverlight 中DataGrid中全选与非全选问题的更多相关文章
- WPF中DataGrid中的DataGridCheckBoxColumn用法(全选,全否,反选)
原文:WPF中DataGrid中的DataGridCheckBoxColumn用法(全选,全否,反选) 前台代码 <DataGrid.Columns> <DataGridCheckB ...
- 让DuiLib CheckBox支持全选、全不选、非全选三种状态
原文 https://blog.csdn.net/EveyX/article/details/38433783 DuiLib官方库中的Checkbox只有Checked和Uncheck两种状态,但我们 ...
- esayUi中datagrid中json串为空时,显示上一次数据的解决方法
function initSearchProject(startDate,finishDate,flag) { $("#finishDate").val(finish ...
- Silverlight 查询DataGrid 中匹配项 ,后台改变选中行颜色
需求:根据关键字(参会人号码或名称)查找参会人,在datagird 中高亮显示 界面:我在界面上增加了一个文本框和按钮,进行查找操作 操作说明: 根据关键字进行搜索:输入关键字 点击查找,如果找到 以 ...
- 【原创】有关Silverlight中“DataGrid中级联动态绑定父/子ComboBox ”的示例。
尝试了很多种方案,由于Datagrid动态生成的每行父子comboBox的Name的不确定性,给父ComboBox绑定事件中获取 子ComboBox很难根据Name获取到. 花了不少时间和公司同事商讨 ...
- 【原创】有关Silverlight中“DataGrid中单元格动态绑定ComboBox单击时数据项莫名被清除 ”的解决方案及思路。
今天上班遇到一个很古怪的问题,搞了半天愣是没找到原因.是这样的,在Datagrid中有绑定一个ComboBox列,其不包含在 model数据中,而是单独在LoadingRow事件中去 从数据库拿数据绑 ...
- checkbox全选与非全选之间的切换
<div id="congras_area"> <input type="checkbox" name="" id=&qu ...
- jeecg中datagrid中获取选定行的字段值
datagrid代码如下: <t:datagrid name="orderMainList" checkbox="true" pagination=&qu ...
- jquery中datagrid中getSelected和getSelections的应用
http://blog.sina.com.cn/s/blog_8e50ede90101fff9.html 刚开始使用jquery的datagrid就知道如果要对特定的一行进行编辑,可以是 $('#on ...
随机推荐
- tachyon 初识
一.简介 Tachyon是一个高容错的分布式文件系统,允许文件以内存的速度在集群框架中进行可靠的共享,就像Spark和MapReduce那样.通过利用信息继承,内存侵入,Tachyon获得了高性能.T ...
- 【Mood-3】心声
每天醒来,我都会想明白一件事情,时间是不会停下来的,如果打算活下去的话,那么我们会有25岁,会有30岁,更会有40岁,为了不让时间风干我的理想,未来只剩下抱怨,那么为明天伏笔,今天只有努力.耸耸背上行 ...
- Oracle基础 动态SQL语句
一.静态SQL和动态SQL的概念. 1.静态SQL 静态SQL是我们常用的使用SQL语句的方式,就是编写PL/SQL时,SQL语句已经编写好了.因为静态SQL是在编写程序时就确定了,我们只能使用SQL ...
- 转移指令jmp和跳转指令call
[-1]写在前面 以下内容文字描述来自于 王爽老师的<汇编语言>教材,建议大家都买一本,哈哈.不是我打广告,确实人家写的好,应该支持.我只是附上了自己的图片和理解而已. [0]先上干货 只 ...
- 获取数组排序后的index算法实现
需求: 一个数组var arr = [4,7,2,9],排序后的新数组var newArr = [2,4,7,9]或者[9,7,4,2] 我们要得到的是排序后元数组的每一项在新数组中的位置所构成的数组 ...
- 2013 ACM/ICPC Asia Regional Online —— Warmup2
HDU 4716 A Computer Graphics Problem 水题.略 HDU 4717 The Moving Points 题目:给出n个点的起始位置以及速度矢量,问任意一个时刻使得最远 ...
- vue-cli 发布(译)
如果你现在正在使用Vue.js,当你构建一个原型的时候,你所需要做的通常就是通过<script>把Vue.js引入进来,然后就完事了.但是真实情况往往不是这样的.当我们真正开发一个应用的时 ...
- 访问iPhone通讯录的问题
每个APP只显示一次上图的提示,即使卸载APP也不显示.如果想再次显示提示,可进入 设置-->通用-->还原-->还原位置与隐私,即可. 而且在ios6中文环境下,访问通讯录会出现错 ...
- js验证连续两位数字递增或递减和连续三位数字相同
<!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8" ...
- Sql Server中的分组
1.Group by可以将相同的数据合并为一组,分组后的数据可以看成是一个临时的表,注意如果sql中有where条件,那么group by必须放在where之后. 2.GROUP BY子句中可以指定多 ...