zoukankan      html  css  js  c++  java
  • SilverLight-DataControls:四、The PagedCollectionView(分页的集合视图) 对象

    ylbtech-SilverLight-DataControls-PagedCollectionView:The PagedCollectionView(分页的集合视图) 对象
    • 1.A, Building  a Data Object(创建一个数据对象)
    • 1.B, Sorting(排序)
    • 1.C, Filtering(过滤)
    • 1.D, Grouping(分组)
    • 1.E, Paging(分页)
    1.A, Building  a Data Object(创建一个数据对象)返回顶部

    /Access/Product.cs

    using System;
    
    using System.Collections.Generic;
    using System.Linq;
    using System.ComponentModel.DataAnnotations;
    namespace SLYlbtechApp.Access
    {
        /// <summary>
        /// 产品类
        /// </summary>
        public class Product
        {
            int productId;
            /// <summary>
            /// 编号【PK】
            /// </summary>
            public int ProductId
            {
                get { return productId; }
                set { productId = value; }
            } 
            string productName;
            /// <summary>
            /// 产品名称
            /// </summary>
            public string ProductName
            {
                get
                {
                    return productName;
                }
                set
                {
                    if (value=="") throw new ArgumentException("不能为空");
                    productName = value;
                }
            }
            string quantityPerUnit;
            /// <summary>
            /// 产品规格
            /// </summary>
            public string QuantityPerUnit
            {
                get { return quantityPerUnit; }
                set { quantityPerUnit = value; }
            }
            /// <summary>
            /// 单位价格
            /// 注意 不要使用 decimal 类型,在 UserControl.Resounrce 资源绑定是引发类型转换异常
            /// </summary>
            double unitPrice;
            [Display(Name="价格",Description="价格不能小于0")]
            public double UnitPrice
            {
                get { return unitPrice; }
                set
                {
                    if (value < 0) throw new ArgumentException("不能小于0");
                    unitPrice = value;
                }
            }
            string description;
            /// <summary>
            /// 描述
            /// </summary>
            public string Description
            {
                get { return description; }
                set { description = value; }
            }
            string productImagePath;
            /// <summary>
            /// 产品图片地址
            /// </summary>
            public string ProductImagePath
            {
                get { return productImagePath; }
                set { productImagePath = value; }
            }
            string categoryName;
            /// <summary>
            /// 类别名称
            /// </summary>
            public string CategoryName
            {
                get { return categoryName; }
                set { categoryName = value; }
            }
            DateTime addedDate;
            /// <summary>
            /// 添加日期
            /// </summary>
            public DateTime AddedDate
            {
                get { return addedDate; }
                set { addedDate = value; }
            }
    
            /// <summary>
            /// 空参构造
            /// </summary>
            public Product()
            {
                AddedDate = new DateTime(2013, 11, 17); //设置默认日期
            }
            /// <summary>
            /// 全参构造
            /// </summary>
            /// <param name="productId"></param>
            /// <param name="productName"></param>
            /// <param name="quantityPerUnit"></param>
            /// <param name="unitPrice"></param>
            /// <param name="description"></param>
            /// <param name="productImagePath"></param>
            /// <param name="categoryName"></param>
            public Product(int productId, string productName, string quantityPerUnit, double unitPrice, string description
                , string productImagePath, string categoryName)
            {
                ProductId = productId;
                ProductName=productName;
                QuantityPerUnit=quantityPerUnit;
                UnitPrice=unitPrice;
                Description=description;
    
                ProductImagePath=productImagePath;
                CategoryName=categoryName;
            }
    
            /// <summary>
            /// 获取全部产品
            /// </summary>
            /// <returns></returns>
            public static IList<Product> GetAll()
            {
                IList<Product> dals = new List<Product>();
                string categoryName = string.Empty;
                string productImagePath = string.Empty;
                string description = "嗟夫!草木无情,有时飘零。人为动物,惟物之灵。百忧感其心,万事劳其形,有动于中,必摇其精。而况思其力之所不及,忧其智之所不能,宜其渥然丹者为槁木,黟然黑者为星星。奈何以非金石之质,欲与草木而争荣?念谁为之戕贼,亦何恨乎秋声!";
                #region Add Product
    
                #region 饮料
                categoryName = "饮料";
                productImagePath = "../Images/pencil.jpg";
    
                dals.Add(new Product()
                {
                    ProductId = 100,
                    ProductName = "啤酒",
                    QuantityPerUnit = "1箱*6听",
                    UnitPrice = 10d,                
                    CategoryName = categoryName
                    ,
                    ProductImagePath = productImagePath,
                    Description = description
                });
    
                dals.Add(new Product()
                {
                    ProductId = 120,
                    ProductName = "绿茶",
                    QuantityPerUnit = "500ml",
                    UnitPrice = 3d,
                    CategoryName = categoryName
                    ,
                    ProductImagePath = productImagePath,
                    Description = description
                });
    
                dals.Add(new Product()
                {
                    ProductId = 190,
                    ProductName = "红茶",
                    QuantityPerUnit = "500ml",
                    UnitPrice = 3d,
                    CategoryName = categoryName
                    ,
                    ProductImagePath = productImagePath,
                    Description = description
                });
                dals.Add(new Product()
                {
                    ProductId = 102,
                    ProductName = "纯净水",
                    QuantityPerUnit = "500ml",
                    UnitPrice = 1.5d,
                    CategoryName = categoryName
                    ,
                    ProductImagePath = productImagePath,
                    Description = description
                });
                #endregion
    
                #region 零食
                categoryName = "零食";
                productImagePath = "../Images/pencil2.jpg";
    
                dals.Add(new Product()
                {
                    ProductId = 200,
                    ProductName = "奥利奥巧克力饼干",
                    QuantityPerUnit = "10 boxes x 20 bags",
                    UnitPrice = 30d,
                    CategoryName = categoryName
                    ,
                    ProductImagePath = productImagePath,
                    Description = description
                });
    
                dals.Add(new Product()
                {
                    ProductId = 220,
                    ProductName = "玻璃 海苔",
                    QuantityPerUnit = "20g",
                    UnitPrice = 13d,
                    CategoryName = categoryName
                    ,
                    ProductImagePath = productImagePath,
                    Description = description
                });
    
                 dals.Add(new Product()
                 {
                     ProductId = 210,
                     ProductName = "好丽友 薯片",
                     QuantityPerUnit = "100g",
                     UnitPrice = 3d,
                     CategoryName = categoryName
                     ,
                     ProductImagePath = productImagePath,
                     Description = description
                 });
                 dals.Add(new Product()
                 {
                     ProductId = 201,
                     ProductName = "统一 老坛酸菜面",
                     QuantityPerUnit = "1 盒",
                     UnitPrice = 8.5d,
                     CategoryName = categoryName
                     ,
                     ProductImagePath = productImagePath,
                     Description = description
                 });
                #endregion
    
                #endregion
                 return dals;
            }
            /// <summary>
            /// GetModel
            /// </summary>
            /// <returns></returns>
            public static Product GetModel()
            {
                Product dal = null;
    
                string categoryName = string.Empty;
                string productImagePath = string.Empty;
                string description = "嗟夫!草木无情,有时飘零。人为动物,惟物之灵。百忧感其心,万事劳其形,有动于中,必摇其精。而况思其力之所不及,忧其智之所不能,宜其渥然丹者为槁木,黟然黑者为星星。奈何以非金石之质,欲与草木而争荣?念谁为之戕贼,亦何恨乎秋声!";
                
                categoryName = "饮料";
                productImagePath = "Images/pencil.jpg";
                dal = new Product()
                {
                    ProductId = 100,
                    ProductName = "啤酒",
                    QuantityPerUnit = "1箱*6听",
                    UnitPrice=3.5,
                    CategoryName = categoryName
                    ,
                    ProductImagePath = productImagePath,
                    Description = description
                };
                //dal._unitPrice = 10d;
                return dal;
            }
            /// <summary>
            /// GetModel
            /// </summary>
            /// <param name="id">产品编号</param>
            /// <returns></returns>
            public static Product GetModel(int id)
            {
                Product dal = null;
                IList<Product> dals = GetAll();
                try
                {
                    dal = dals.Single(p => p.ProductId == id);
                }
                catch { }
                finally
                {
                    dals = null;
                }
                return dal;
            }
        }
    }
    View Code

    4,

    1.B, Sorting(排序)返回顶部
    1,
    2,
    2.1/3,
    xmlns:data="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data" 

    2.2/3,

    <Grid x:Name="LayoutRoot" Background="White">
        <Grid.RowDefinitions>
            <RowDefinition Height="*"></RowDefinition>
            <RowDefinition Height="30"></RowDefinition>
        </Grid.RowDefinitions>
        <data:DataGrid Grid.Row="0" x:Name="gridList" AutoGenerateColumns="False">
            <data:DataGrid.Columns>
                <data:DataGridTextColumn Header="Category Name" Binding="{Binding CategoryName}"></data:DataGridTextColumn>
                <data:DataGridTextColumn Header="Product Id" Binding="{Binding ProductId}"></data:DataGridTextColumn>
                <data:DataGridTextColumn Header="Product Name" Binding="{Binding ProductName}"></data:DataGridTextColumn>
                <data:DataGridTextColumn Header="UnitPrice" Binding="{Binding UnitPrice}" CanUserReorder="True"></data:DataGridTextColumn>
                <data:DataGridTextColumn Header="Added Date" Binding="{Binding AddedDate}"></data:DataGridTextColumn>
            </data:DataGrid.Columns>
        </data:DataGrid>
    </Grid>
    View Code

    2.3/3,

    using System.Windows.Controls;
    
    using SLYlbtechApp.Access;
    using System.Windows.Data;
    namespace SLYlbtechApp.ThePagedCollectionView
    {
        public partial class Sorting : UserControl
        {
            public Sorting()
            {
                InitializeComponent();
    
                PagedCollectionView view = new PagedCollectionView(Product.GetAll());
                //排序
                view.SortDescriptions.Add(new System.ComponentModel.SortDescription("UnitPrice"
                    , System.ComponentModel.ListSortDirection.Ascending));
                view.SortDescriptions.Add(new System.ComponentModel.SortDescription("ProductId"
                    , System.ComponentModel.ListSortDirection.Ascending)); //二次排序
                this.gridList.ItemsSource = view;
            }
        }
    }

    3,

    4,
    1.C, Filtering(过滤)返回顶部
    1,
    2,
    2.1/3, 同上文 B.2.1/3
    2.2/3, 同上文 B.2.2/3
    2.3/3,
    using System.Windows.Controls;
    
    using SLYlbtechApp.Access;
    using System.Windows.Data;
    namespace SLYlbtechApp.ThePagedCollectionView
    {
        public partial class Filtering : UserControl
        {
            public Filtering()
            {
                InitializeComponent();
                PagedCollectionView view = new PagedCollectionView(Product.GetAll());
                //过滤集合
                view.Filter = delegate(object filterObject)
                {
                    Product product = (Product)filterObject;
                    return (product.CategoryName == "饮料"); //只显示 类别名称等于“饮料”的商品
                };
                this.gridList.ItemsSource = view;
            }
        }
    }

    3,

    4,
    1.D Grouping(分组)返回顶部
    1,
    1.1/2, 一次分组
    1.2/2,二次分组
    2,
    2.1/3, 同上文 B.2.1/3
    2.2/3, 同上文 B.2.2/3
    2.3/3,
    using System.Windows.Controls;
    
    using SLYlbtechApp.Access;
    using System.Windows.Data;
    namespace SLYlbtechApp.ThePagedCollectionView
    {
        public partial class Grouping : UserControl
        {
            public Grouping()
            {
                InitializeComponent();
    
                PagedCollectionView paged = new PagedCollectionView(Product.GetAll());
                //分组
                paged.GroupDescriptions.Add(new PropertyGroupDescription("CategoryName"));
                //paged.GroupDescriptions.Add(new System.Windows.Data.PropertyGroupDescription("UnitPrice")); //二次分组
                this.gridList.ItemsSource = paged;
            }
        }
    }

    3,

    4,
    1.E, Paging(分页)返回顶部
    1,
    2,
    2.1/3, 同上文 B.2.1/3
    2.2/3,
    <Grid x:Name="LayoutRoot" ShowGridLines="True" Background="White">
        <Grid.RowDefinitions>
            <RowDefinition/>
            <RowDefinition Height="30"/>
            <RowDefinition Height="30"/>
            <RowDefinition Height="30"/>
            <RowDefinition Height="30"/>
            <RowDefinition Height="30"/>
            <RowDefinition Height="30"/>
        </Grid.RowDefinitions>
        <data:DataGrid x:Name="gridList" AutoGenerateColumns="False" Margin="3">
            <data:DataGrid.Columns>
                <data:DataGridTextColumn Header="Category Name" Binding="{Binding CategoryName}"></data:DataGridTextColumn>
                <data:DataGridTextColumn Header="Product Id" Binding="{Binding ProductId}"></data:DataGridTextColumn>
                <data:DataGridTextColumn Header="Product Name" Binding="{Binding ProductName}"></data:DataGridTextColumn>
                <data:DataGridTextColumn Header="UnitPrice" Binding="{Binding UnitPrice}" CanUserReorder="True"></data:DataGridTextColumn>
                <data:DataGridTextColumn Header="Added Date" Binding="{Binding AddedDate}"></data:DataGridTextColumn>
            </data:DataGrid.Columns>
        </data:DataGrid>
        <data:DataPager x:Name="pager" Grid.Row="1" Margin="3" IsTotalItemCountFixed="True"
                        PageSize="5" DisplayMode="FirstLastNumeric" Source="{Binding ItemsSource, ElementName=gridList}"/>
        <data:DataPager x:Name="pager2" Grid.Row="2" Margin="3" IsTotalItemCountFixed="True"
                        PageSize="5" Source="{Binding ItemsSource, ElementName=gridList}"/>
        <data:DataPager x:Name="pager3" Grid.Row="3" Margin="3" IsTotalItemCountFixed="True"
                        PageSize="5" DisplayMode="FirstLastPreviousNextNumeric" Source="{Binding ItemsSource, ElementName=gridList}"/>
        <data:DataPager x:Name="pager4" Grid.Row="4" Margin="3" IsTotalItemCountFixed="True"
                        PageSize="5" DisplayMode="Numeric" Source="{Binding ItemsSource, ElementName=gridList}"/>
        <data:DataPager x:Name="pager5" Grid.Row="5" Margin="3" IsTotalItemCountFixed="True"
                        PageSize="5" DisplayMode="PreviousNext" Source="{Binding ItemsSource, ElementName=gridList}"/>
        <data:DataPager x:Name="pager6" Grid.Row="6" Margin="3" IsTotalItemCountFixed="True"
                        PageSize="5" DisplayMode="PreviousNextNumeric" Source="{Binding ItemsSource, ElementName=gridList}"/>
    </Grid>
    View Code

    2.3/3,

    using System.Windows.Controls;
    
    using SLYlbtechApp.Access;
    using System.Windows.Data;
    namespace SLYlbtechApp.ThePagedCollectionView
    {
        public partial class Paging : UserControl
        {
            public Paging()
            {
                InitializeComponent();
                //分页
                PagedCollectionView view = new PagedCollectionView(Product.GetAll());
                this.gridList.ItemsSource = view;
            }
        }
    }

    3,

    4,
    1.F,返回顶部
     
    warn 作者:ylbtech
    出处:http://ylbtech.cnblogs.com/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    报表打印
    MyGridControl
    用户控件制作时设计模式加载报错的解决办法
    代码生成工具
    上传控件的使用
    数据加密
    DevExpress介绍
    记一次手动安装pecl扩展memcache
    关于httpd.conf的一点随笔
    temp
  • 原文地址:https://www.cnblogs.com/ylbtech/p/3428589.html
Copyright © 2011-2022 走看看