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 ...
随机推荐
- AllJoyn Bundled Daemon 使用方式研究
关于AllJoyn不多做介绍,请看官网:www.alljoyn.org/ 0. 问题来源: 应用程序要使用AllJoyn库,就必须启动deamon. 目前有两种方式: 使用standalone形式,单 ...
- 使用 satis 搭建一个私有的 Composer 包仓库
在我们的日常php开发中可能需要使用大量的composer包,大部份都可以直接使用,但在公司内部总有一小部份包是不能公开的,这时候我们就需要搭建一个公司内部使用的composer仓库,好在compos ...
- Java SE --- 自增自减
关于变量的自增与自减运算. 1) int b = a++,作用是将a的值先赋给b,然后再让a自增1. 2) int b = ++a,作用是将a的值先自增1,然后将自增后的结果赋给b. 直接上例 ...
- TQ210开发板NFS挂载android4.0.4的rootfs的方法
首先声明的是,我使用的u-boot是自己移植的u-boot2013.01.01而非天嵌官方的那个,至于使用官方的u-boot如何去实现nfs挂载rootfs我没怎么研究过,不过原理方法都是一致的. 主 ...
- oracle PL/SQL(procedure language/SQL)程序设计
PL/SQL(procedure language/SQL)语言是Oracle对SQL语言的过程化扩充,是一个完整的编程语言.PL/SQL实现了过程化语句(如分支.循环等)与SQL语句的无缝连接,将过 ...
- Spring操作mongo排序,限制查询记录数
Query query = new Query(); Criteria criteria = Criteria.where("timestamp").gt(from).lt(to) ...
- 在Eclipse中导入文件和文件夹
一. 将JAVA文件夹导入Eclipse中的方法: 方法一:直接将java文件夹复制,然后粘贴到项目下: 方法二:(1)打开Eclipse,点击项目的空白处,现在import: (2)现在Existi ...
- 详细js中(function(window,document,undefined))的作用
在jquery插件中我们经常看到以下这段代码 对于很多初学者来说很难明白这表示什么,下边我将为大家介绍其相应的作用. 1.代码最前面的分号,可以防止多个文件压缩合并以为其他文件最后一行语句没加分号,而 ...
- SimpleDateFormat 相关用法
parse(String s)返回的是一个Date类型数据,format(Date d)返回的是一个String类型的数据 SimpleDateFormat sd = new SimpleDateFo ...
- ruby学习--varaible
#全局变量 $global_variable=10 class Class1 def print_global() puts "Global variable in Class1 is #{ ...