前景:列表加载数据并且分页,下班搞到现在,希望明天能用到。。。。。。
<UserControl xmlns:sdk="http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk" x:Class="SilverlightApplication1.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
>
<Grid x:Name="LayoutRoot" Background="White">
<StackPanel x:Name="stakpanel1" Background="Wheat">
<TextBlock Margin="10,5,0,0" Text="数据显示控件"
FontSize="17" FontWeight="Bold" Foreground="Azure" ></TextBlock>
<TextBlock Text="订单" Margin="10,5,0,0" ></TextBlock>
<sdk:DataGrid x:Name="dataGrid1" Height="120" Margin="5,5,5,5" RowDetailsVisibilityMode="VisibleWhenSelected"
AutoGenerateColumns="False" SelectedIndex="1" >
<sdk:DataGrid.Columns>
<sdk:DataGridTextColumn Header="订单号" Width="SizeToHeader" Binding="{Binding OrderID}" IsReadOnly="True">
</sdk:DataGridTextColumn>
<sdk:DataGridTextColumn Header="客户名称" Width="SizeToHeader" Binding="{Binding CustomerName}" IsReadOnly="True">
</sdk:DataGridTextColumn>
<sdk:DataGridTextColumn Header="订单签订日期" Width="SizeToHeader" Binding="{Binding OrderDate}" IsReadOnly="True">
</sdk:DataGridTextColumn>
<sdk:DataGridTextColumn Header="是否变更" Width="SizeToHeader" Binding="{Binding IsChanged}" IsReadOnly="True">
</sdk:DataGridTextColumn>
</sdk:DataGrid.Columns>
</sdk:DataGrid>
<sdk:DataPager x:Name="dataPager1" PageSize="1" DisplayMode="FirstLastPreviousNextNumeric" Source="{Binding ItemsSource,ElementName=dataGrid1}"
Background="Aquamarine"></sdk:DataPager>
<sdk:DataGrid x:Name="Detail"
Margin="5,5,5,5" RowDetailsVisibilityMode="VisibleWhenSelected"
AutoGenerateColumns="False">
<sdk:DataGrid.Columns>
<sdk:DataGridTextColumn Header="订单号" Width="SizeToHeader" Binding="{Binding OrderID}" IsReadOnly="True">
</sdk:DataGridTextColumn>
<sdk:DataGridTextColumn Header="产品名称" Width="SizeToHeader" Binding="{Binding ProductName}" IsReadOnly="True">
</sdk:DataGridTextColumn>
<sdk:DataGridTextColumn Header="单价" Width="SizeToHeader" Binding="{Binding Price}" IsReadOnly="True">
</sdk:DataGridTextColumn>
<sdk:DataGridTextColumn Header="数量" Width="SizeToHeader" Binding="{Binding Quantity}" IsReadOnly="True">
</sdk:DataGridTextColumn>
<sdk:DataGridTextColumn Header="金额" Width="SizeToHeader" Binding="{Binding DisCount}" IsReadOnly="True">
</sdk:DataGridTextColumn>
</sdk:DataGrid.Columns>
</sdk:DataGrid>
<sdk:DataPager x:Name="dataPager" PageSize="2" DisplayMode="FirstLastPreviousNextNumeric" Source="{Binding ItemsSource,ElementName=Detail}"
Background="Aquamarine"></sdk:DataPager>
</StackPanel>
</Grid>
</UserControl>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using System.ComponentModel;
using System.Collections.ObjectModel;
using System.Windows.Data;
namespace SilverlightApplication1
{
public partial class MainPage : UserControl
{
public MainPage()
{
InitializeComponent();
dataGrid1.SelectionChanged +=
new SelectionChangedEventHandler(dataGrid1_SelecdChanged);
dataPager.PageIndexChanged += new EventHandler<EventArgs>(dataPager_PageIndexChanged);
dataPager1.PageIndexChanged += new EventHandler<EventArgs>(dataPager1_PageIndexChanged);
LoadDate();
}
void dataGrid1_SelecdChanged(object sender, SelectionChangedEventArgs e)
{
Order order = this.dataGrid1.SelectedItem as Order;
if (order != null)
this.Detail.ItemsSource = OrderDetails.GetOrderDetailByID(order.OrderId);
}
private void LoadDate()
{
PagedCollectionView pager = new PagedCollectionView(OrderDetails.GetAllOrderDetail());
this.Detail.ItemsSource = pager;
PagedCollectionView pager1 = new PagedCollectionView(Orders.GetSampleOrderList());
this.dataGrid1.ItemsSource = pager1;
}
void dataPager1_PageIndexChanged(object sender, EventArgs e)
{
}
void dataPager_PageIndexChanged(object sender, EventArgs e)
{
DataPager datapager = sender as DataPager;
MessageBox.Show("当前是第" + dataPager.PageIndex.ToString() + "页");
}
}
#region 数据
public class Order
{
public string OrderId { get; set; }
public string CustomerName { get; set; }
public DateTime OrderDate { get; set; }
public bool IsChanged { get; set; }
public Order(string orderID, string customername, DateTime orderdate, bool ischanged)
{
this.OrderId = orderID;
this.CustomerName = customername;
this.OrderDate = orderdate;
this.IsChanged = ischanged;
}
}
public class OrderDetail
{
public string OrderID { get; set; }
public string ProductName { get; set; }
public decimal Price { get; set; }
public int Quantity { get; set; }
public decimal DisCount { get; set; }
public OrderDetail(string orderid, string productname, decimal price, int quantity, decimal count)
{
this.OrderID = orderid;
this.ProductName = productname;
this.Price = price;
this.Quantity = quantity;
this.DisCount = count;
}
}
public class Orders
{
public static List<Order> GetSampleOrderList()
{
return new List<Order>{
new Order("001","A公司",DateTime.Now,true),
new Order("002","B公司",DateTime.Now,false)};
}
}
public class OrderDetails
{
private static List<OrderDetail> OrderDetaillist = new List<OrderDetail>
{
new OrderDetail("001","product_1",10,10,100),
new OrderDetail("001","product_2",20,10,200),
new OrderDetail("001","product_3",20,10,200),
new OrderDetail("002","product_a",20.28M,10,200),
new OrderDetail("002","product_b",20.9M,10,200),
new OrderDetail("002","product_c",20.9M,90,200)
};
//得到当前编号的详情信息
public static List<OrderDetail> GetOrderDetailByID(string orderid)
{
List<OrderDetail> oldorderdetail = new List<OrderDetail>();
foreach (OrderDetail order in OrderDetaillist)
{
if (order.OrderID.CompareTo(orderid) == 0)
{
oldorderdetail.Add(order);
}
}
return oldorderdetail;
}
//得到全部的详细信息
public static List<OrderDetail> GetAllOrderDetail()
{
return OrderDetaillist;
}
}
#endregion
}