<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的排序事件的更多相关文章

  1. 【原创】有关Silverlight中“DataGrid中级联动态绑定父/子ComboBox ”的示例。

    尝试了很多种方案,由于Datagrid动态生成的每行父子comboBox的Name的不确定性,给父ComboBox绑定事件中获取 子ComboBox很难根据Name获取到. 花了不少时间和公司同事商讨 ...

  2. 【原创】有关Silverlight中“DataGrid中单元格动态绑定ComboBox单击时数据项莫名被清除 ”的解决方案及思路。

    今天上班遇到一个很古怪的问题,搞了半天愣是没找到原因.是这样的,在Datagrid中有绑定一个ComboBox列,其不包含在 model数据中,而是单独在LoadingRow事件中去 从数据库拿数据绑 ...

  3. silverlight中datagrid数据到处excel

    首先新建一个DataGrdiExtensions类,代码为: public static class DataGridExtensions { /// <summary> /// 导出dg ...

  4. Silverlight 中DataGrid中全选与非全选问题

    问题:当点击全选时,全选所有的复选框,但是滚动屏幕时,却复选框就会取消选中 一.解决方法(将要展示的实体数据模型添加bool属性,在数据绑定时添加click时间,盘带选中的状态,就可以了) 1. xa ...

  5. silverlight中DataGrid数据高亮显示

    效果如图所示, <UserControl xmlns:controls="clr-namespace:System.Windows.Controls;assembly=System.W ...

  6. Silverlight中DataGrid的显示指定列、修改默认列名和格式化日期数据和小数数据

    一:DataGrid的显示指定列.修改默认列名 使用自动生成列,就会无区别的按缺省格式展示所有项目.除了bit类型,其他类型项目会以字符串形式展现. 通过设置Columns属性,可以选择性的显示列,以 ...

  7. Silverlight 中datagrid控件-- 通过设置数据虚拟化加速显示

    定义依赖属性作为datagrid的数据源 protected static readonly DependencyProperty ViewLogsProperty = DependencyPrope ...

  8. [转载]EasyUI中数据表格DataGrid添加排序功能

    我们这里演示的是EasyUI数据表格DataGrid从服务器端排序功能,因为觉的本地数据排序没有多大的作用,一般我们DataGrid不会读取全部数据,只会读取当前页的数据,所以本地数据排序也只是对当前 ...

  9. Silverlight中在MVVM模式下对DatagridRow选择控件封装

    在项目中,凡是涉及到表格的地方用的最多的控件,自然少不了DataGrid的身影,它明了的展示各种数据让人十分喜欢.现在要实现一个功能,使DataGrid具有全选和项选中的功能,如果在传统后台代码中完成 ...

随机推荐

  1. Qt通过极光推送向app推送消息

    简介 最近在做个项目,当客服端收到防盗的消息通知时向手机app推送一个消息,告知有防盗报警.这么小的功能没必要自己写个推送端,极光推送免费而且推送的成功率高,已经能满足我们的需求了. 极光推送的文档大 ...

  2. jsp中,对window对象的简单总结

    window的对象有: alert(message) 弹出一个警示对话框confirm(message) 弹出一个确认对话框prompt(message,defaultmessage) 弹出一个提示对 ...

  3. yii2.0 面包屑的使用

    yii2中面包屑是yii2自带的小部件,类似本网站的导航栏应该就是采用面包屑来完成的 例子如下,需要引入 yii\widgets\Breadcrumbs echo Breadcrumbs::widge ...

  4. {java学习}[第一章]软件开发概述(2017.1.11).

  5. Url有值怎么使用get传值

    原来url有数据 test 我们可以$_GET可以获取出来 一般form表单头用get方式都可以满足大多需求 但有一种情况 url里已经有值的时候 用url就会覆盖原来的值 而数据就会丢失 : 数据又 ...

  6. HTML link标签media参数

    写html这么久了,今天才发现link标签还有个media参数,赶紧把它补回来,虽然现在没有用到,但是不能不知道它 定义和用法 media 属性规定被链接文档将显示在什么设备上. media 属性用于 ...

  7. PHP来实现文件上传

    文件php <?phpif ($_FILES["file"]["error"] > 0){ echo '错误: ' . $_FILES[" ...

  8. 触发器实现对插入数据的字段更改 Oracle+SQL Server

    最近有个使用触发器实现对插入数据的某个列做更改的需求,因此整理了Oracle和SQL Server对于此类需求的触发器写法,本文仅提到了Insert触发器. 首先我们创建一张表: --创建Test表 ...

  9. 计算机网络课程优秀备考PPT之第三章数据链路层(三)

    为了记录自己从2016.9~2017.1的<计算机网络>助教生涯,也为了及时梳理和整写笔记! 前期博客是, 计算机网络课程优秀备考PPT之第一章概述(一) 计算机网络课程优秀备考PPT之第 ...

  10. 数据库DateTime类型为空的处理

    一,写一个辅助类,将该方法设为静态,先装换为object,在转为DateTime,返回DateTime public class DateTimeHelper { public static Date ...