• 自定义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;
           }

  • 相关阅读:
    esp32 使用TFTe_SPI库在TFTlcd播放视频
    ESP32概述,环境搭建,程序下载,xtensaesp32elfg++: error: CreateProcess: No such file or directory错误解决
    esp32 lvgl用于TFTLCD屏幕,TFT_eSPI库移植,设置控件边框颜色,图片在屏幕中位置设置,设置字体颜色,屏幕切换函数参数讲解
    pyqt5 信号与槽函数简介,利用cv2鼠标事件在图片中绘制矩形
    esp32(tftlcd) lvgl外部 SD 卡图片显示,lvgl动画演示,esp32wifi使用(获取时间,天气)
    esp32 lvgl播放视频于oled,读取SD卡,定时器中断使用
    esp32 arduino 移植lvgl,oled显示,lvgl屏幕建立,屏幕切换,图片显示,手动发送事件,触发部件响应其对应的回调函数,label,bar,line,style简单使用,显示字体修改
    C# .net core web socket 基础用法
    CF1620G Solution
    CS0016: 未能写入输出文件“xxx”“目录名称无效。 ”
  • 原文地址:https://www.cnblogs.com/kurt/p/3678255.html
Copyright © 2020-2023  润新知