自定义silverlight中datagrid的排序事件
<sdk:DataGrid AutoGenerateColumns="False" CanUserSortColumns="False" CanUserReorderColumns="False" IsReadOnly="True" HorizontalAlignment="Left" Margin="0,0,0,86" x:Name="ErrorCodeGrid" Width="662" Grid.Row="1" MouseLeftButtonDown="ErrorCodeGrid_MouseLeftButtonDown">
<sdk:DataGrid.Columns>
<sdk:DataGridTextColumn Header="日期" Binding="{Binding Date}" Width="110"/>
<sdk:DataGridTextColumn Header="地市" Binding="{Binding Area}" Width="110"/>
<sdk:DataGridTextColumn Header="发送/接收" Binding="{Binding Pattern}" Width="95" />
<sdk:DataGridTextColumn Header="短信类型" Binding="{Binding EmailType}" Width="115"/>
<sdk:DataGridTextColumn Header="机型" Binding="{Binding PhoneType}" Width="115"/>
<sdk:DataGridTextColumn Header="比例" Binding="{Binding Ratio}" Width="*"/>
</sdk:DataGrid.Columns>
</sdk:DataGrid>
//下面为单机事件
private void ErrorCodeGrid_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
var u = from element in VisualTreeHelper.FindElementsInHostCoordinates(e.GetPosition(null), ErrorCodeGrid)
where element is DataGridColumnHeader
select element;
if (u.Count() == 1)
{
//鼠标点击的ColumnHeader
DataGridColumnHeader header = (DataGridColumnHeader)u.Single();
//要排序的字段
string _newSort = header.Content.ToString();
if (dir == "desc")
{
dir = "asc";
}
else
{
dir = "desc";
}
sortFiled = _newSort;
sortHeader = header;
SortData(dir, sortFiled);
e.Handled = true;
}
else
{
e.Handled = false;
}
}
//排序事件
void SortData(string sortType, string sortFiled)
{
dDetailList = ChangeResult(DetailList);
if (sortType == "desc")
{
switch (sortFiled)
{
case "比例":
dDetailList = dDetailList.OrderByDescending(u => u.Ratio).ToList();
break;
default:
break;
}
}
else
{
switch (sortFiled)
{
case "比例":
dDetailList = dDetailList.OrderBy(u => u.Ratio).ToList();
break;
default:
break;
}
}
DetailList = ChangeBackResult(dDetailList);
fenye("first");
}
//分页事件
void fenye(string done)
{
TotalCount = DetailList.Count();
if (TotalCount % PageSize == 0)
{
TotalPage = TotalCount / PageSize;
}
else
{
TotalPage = TotalCount / PageSize + 1;
}
first.Foreground = new SolidColorBrush(Color.FromArgb(255, 0, 0, 0));
pre.Foreground = new SolidColorBrush(Color.FromArgb(255, 0, 0, 0));
next.Foreground = new SolidColorBrush(Color.FromArgb(255, 0, 0, 0));
last.Foreground = new SolidColorBrush(Color.FromArgb(255, 0, 0, 0));
if (done == "first")
{
CurrentPage = 1;
}
else if (done == "last")
{
CurrentPage = TotalPage;
next.Foreground = new SolidColorBrush(Color.FromArgb(255, 178, 187, 190));
last.Foreground = new SolidColorBrush(Color.FromArgb(255, 178, 187, 190));
}
else if (done == "pre")
{
if (CurrentPage > 1)
CurrentPage -= 1;
else
{
first.Foreground = new SolidColorBrush(Color.FromArgb(255, 178, 187, 190));
pre.Foreground = new SolidColorBrush(Color.FromArgb(255, 178, 187, 190));
}
}
else if (done == "next")
{
if (CurrentPage < TotalPage)
CurrentPage += 1;
else
{
next.Foreground = new SolidColorBrush(Color.FromArgb(255, 178, 187, 190));
last.Foreground = new SolidColorBrush(Color.FromArgb(255, 178, 187, 190));
}
}
if (TotalPage == 1)
{
first.Foreground = new SolidColorBrush(Color.FromArgb(255, 178, 187, 190));
pre.Foreground = new SolidColorBrush(Color.FromArgb(255, 178, 187, 190));
next.Foreground = new SolidColorBrush(Color.FromArgb(255, 178, 187, 190));
last.Foreground = new SolidColorBrush(Color.FromArgb(255, 178, 187, 190));
}
pageShow.Text = CurrentPage + "/" + TotalPage;
List<ErrorCodeDetailBind> query = DetailList.Take(CurrentPage * PageSize).Skip((CurrentPage - 1) * PageSize).ToList();
ErrorCodeGrid.ItemsSource = query;
}
自定义silverlight中datagrid的排序事件的更多相关文章
- 【原创】有关Silverlight中“DataGrid中级联动态绑定父/子ComboBox ”的示例。
尝试了很多种方案,由于Datagrid动态生成的每行父子comboBox的Name的不确定性,给父ComboBox绑定事件中获取 子ComboBox很难根据Name获取到. 花了不少时间和公司同事商讨 ...
- 【原创】有关Silverlight中“DataGrid中单元格动态绑定ComboBox单击时数据项莫名被清除 ”的解决方案及思路。
今天上班遇到一个很古怪的问题,搞了半天愣是没找到原因.是这样的,在Datagrid中有绑定一个ComboBox列,其不包含在 model数据中,而是单独在LoadingRow事件中去 从数据库拿数据绑 ...
- silverlight中datagrid数据到处excel
首先新建一个DataGrdiExtensions类,代码为: public static class DataGridExtensions { /// <summary> /// 导出dg ...
- Silverlight 中DataGrid中全选与非全选问题
问题:当点击全选时,全选所有的复选框,但是滚动屏幕时,却复选框就会取消选中 一.解决方法(将要展示的实体数据模型添加bool属性,在数据绑定时添加click时间,盘带选中的状态,就可以了) 1. xa ...
- silverlight中DataGrid数据高亮显示
效果如图所示, <UserControl xmlns:controls="clr-namespace:System.Windows.Controls;assembly=System.W ...
- Silverlight中DataGrid的显示指定列、修改默认列名和格式化日期数据和小数数据
一:DataGrid的显示指定列.修改默认列名 使用自动生成列,就会无区别的按缺省格式展示所有项目.除了bit类型,其他类型项目会以字符串形式展现. 通过设置Columns属性,可以选择性的显示列,以 ...
- Silverlight 中datagrid控件-- 通过设置数据虚拟化加速显示
定义依赖属性作为datagrid的数据源 protected static readonly DependencyProperty ViewLogsProperty = DependencyPrope ...
- [转载]EasyUI中数据表格DataGrid添加排序功能
我们这里演示的是EasyUI数据表格DataGrid从服务器端排序功能,因为觉的本地数据排序没有多大的作用,一般我们DataGrid不会读取全部数据,只会读取当前页的数据,所以本地数据排序也只是对当前 ...
- Silverlight中在MVVM模式下对DatagridRow选择控件封装
在项目中,凡是涉及到表格的地方用的最多的控件,自然少不了DataGrid的身影,它明了的展示各种数据让人十分喜欢.现在要实现一个功能,使DataGrid具有全选和项选中的功能,如果在传统后台代码中完成 ...
随机推荐
- asp.net MVC Session锁的问题
一直在用Session,对Session锁并没有太多的关注,可能是平时没有注意.前段时间突然发现,一个Ajax Get请求,直接访问地址,只需要几十ms,但是在页面中加载,却需要2s.最后定位到Ses ...
- HDU 4442 Physical Examination(贪心)
HDU 4442 Physical Examination(贪心) 题目链接http://acm.split.hdu.edu.cn/showproblem.php?pid=4442 Descripti ...
- pip更换软件镜像源
家里的网络访问某些国外网站.下载安装包的时候总是连接不上或者下载速度特别慢, pypi.python.org就是其中一个.所以,使用pip给Python安装软件时,经常出现错误.修改pip连接的软件库 ...
- css三种布局方式
第一种布局方式:标准流(文档流) 标准流即为元素默认的显示方式.如块级元素独占一行,行内元素可以在一行显示. 第二种布局方式:浮动,float属性 浮动对应的css属性是float:left/righ ...
- Android:Asmack能登录但是获取不到联系人的问题
先说一下:换了N个jar包,换了N个OpenFire,就是获取不到联系人.但是能登录.特别纳闷,百度不到,google一下,有人隐约说了下权限的问题. 终于搞出来了,总结一下,浪费了一整天的时间.(码 ...
- Java继承多态中的方法访问权限控制
java中的方法天生具有继承多态特性,这点与C++有很大不同(需要在父类方发上加virtual关键字),但用起来确实方便了许多. 最简单的继承多态 声明一个接口BaseIF,只包含一个方法声明 pub ...
- js变量,语句
- android项目实战 --ListView 头部ViewPager广告轮询图效果
看开源框架:https://github.com/tianshaojie/AndroidFine,里面有如下效果,特记录学习下,以后项目中用也好能够立刻想起来. 如上面所示,是常见项目中的图片轮训 ...
- git的使用,将本地项目push到github上
Git教程(推荐): http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000git是先用a ...
- [妙味JS基础]第五课:函数传参、重用、价格计算
知识点总结 函数传参,传的参数=数据类型(即:数值.字符串.布尔.函数.对象.未定义) 通过传参来重用代码 1.尽量保证 HTML 代码结构一致,可以通过父级选取子元素 2.把核心主程序实现,用函数包 ...