SilverLight-DataControls:四、The PagedCollectionView(分页的集合视图) 对象_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > SilverLight-DataControls:四、The PagedCollectionView(分页的集合视图) 对象

SilverLight-DataControls:四、The PagedCollectionView(分页的集合视图) 对象

 2013/11/18 10:29:53  ylbtech  博客园  我要评论(0)
  • 摘要:ylbtech-SilverLight-DataControls-PagedCollectionView:ThePagedCollectionView(分页的集合视图)对象1.A,BuildingaDataObject(创建一个数据对象)1.B,Sorting(排序)1.C,Filtering(过滤)1.D,Grouping(分组)1.E,Paging(分页)1.A,BuildingaDataObject(创建一个数据对象)返回顶部/Access/Product.csusingSystem
  • 标签:Silverlight view
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

class="code_img_closed" src="/Upload/Images/2013111810/0015B68B3C38AA5B.gif" alt="" />logs_code_hide('731a380b-3225-4dbf-b09d-c44a6c4e3173',event)" src="/Upload/Images/2013111810/2B1B950FA3DF188F.gif" alt="" />
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/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
发表评论
用户名: 匿名