zoukankan      html  css  js  c++  java
  • 自定义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;
           }

  • 相关阅读:
    Decrease (Judge ver.)
    Raising Modulo Numbers
    最短Hamilton路径
    64位整数乘法
    递归系列——数组和对象的相关递归
    函数内容新增——函数表达式
    数据结构和算法(一)——栈
    (转)jQuery中append(),prepend()与after(),before()的区别
    微信端的user-Agent
    less知识点总结(二)
  • 原文地址:https://www.cnblogs.com/kurt/p/3678255.html
Copyright © 2011-2022 走看看