使用WCF实现服务器分页
来源:互联网 发布:扫描字的软件 编辑:程序博客网 时间:2024/05/17 05:14
WCF端
using System;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Activation;
using System.Collections.Generic;
namespace SilverlightApplication1.Web.WCF
{
public partial class Service1
{
/// <summary>
///
/// </summary>
/// <param name="tatolCount">总条数</param>
/// <param name="pageIndex">获取数据的页码</param>
/// <param name="pageSize">每页大小</param>
/// <returns></returns>
[OperationContract]
public List<UserInfo> getUserList(out int totalCount, int pageIndex, int pageSize)
{
using (SLtestEntities entities = new SLtestEntities())
{
totalCount = entities.UserInfo.Count();
return entities.UserInfo.OrderByDescending(c => c.id).Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList();
}
}
}
}
客户端
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 SilverlightApplication1.ServiceReference1;
using System.Windows.Data;
namespace SilverlightApplication1
{
public partial class MainPage : UserControl
{
int pageSize = 3;//每页大小
int pageIndex = 1;//当前页数
bool 是否要调用分页方法 = true;
public MainPage()
{
InitializeComponent();
getUserList();
}
/// <summary>
/// 从服务器获取分页数据
/// </summary>
private void getUserList()
{
Service1Client client = new Service1Client();
client.getUserListCompleted += new EventHandler<getUserListCompletedEventArgs>(client_getUserListCompleted);
client.getUserListAsync(pageIndex, pageSize);
client.CloseAsync();
}
void client_getUserListCompleted(object sender, getUserListCompletedEventArgs e)
{
if (e.Error == null)
{
是否要调用分页方法 = false;
RefreshDataPager(e.tatolCount, dataPager1, pageSize, pageIndex);
dataGrid1.ItemsSource = e.Result;
是否要调用分页方法 = true;
}
}
/// <summary>
/// 刷新分页控件的值
/// </summary>
/// <param name="TatolCount">总条数</param>
/// <param name="dataPager">要刷新的分页控件</param>
/// <param name="pageSize">每页大小</param>
/// <param name="pageIndex">当前页数</param>
public void RefreshDataPager(int TatolCount, DataPager dataPager, int pageSize, int pageIndex)
{
List<int> NumList = new List<int>();
for (int i = 0; i < TatolCount; i++) NumList.Add(i);
PagedCollectionView pcv = new PagedCollectionView(NumList);
dataPager.Source = pcv;
dataPager.PageSize = pageSize;//设置分页控件的每页大小
//设置翻页控件的显示页码。
if (dataPager.PageCount >= pageIndex)//如果总页数大于当前页数
{
dataPager.PageIndex = pageIndex - 1;//设置当前显示的页码,因为dataPager.PageIndex的设置页数是重0开始的所以要减1
}
else//如果
{
pageIndex = dataPager.PageCount;
dataPager.PageIndex = pageIndex - 1;
}
}
private void dataPager1_PageIndexChanged(object sender, EventArgs e)
{
if (是否要调用分页方法 == true)
{
pageIndex = ((DataPager)sender).PageIndex + 1;
getUserList();//获取用户总条数
}
}
}
}
XAML端
<UserControl 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"
xmlns:sdk="http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk"
d:DesignHeight="591" d:DesignWidth="544">
<Grid x:Name="LayoutRoot" Background="White" Height="394" Width="466">
<sdk:DataGrid AutoGenerateColumns="False" Height="200" HorizontalAlignment="Left" Margin="12,12,0,0" Name="dataGrid1" VerticalAlignment="Top" Width="412" >
<sdk:DataGrid.Columns>
<sdk:DataGridTemplateColumn Header="名字" SortMemberPath="user_name" CanUserSort="True" CanUserResize="True" CanUserReorder="True">
<sdk:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<StackPanel Margin="5,0,5,0">
<TextBlock Text="{Binding user_name}">
</TextBlock>
</StackPanel>
</DataTemplate>
</sdk:DataGridTemplateColumn.CellTemplate>
</sdk:DataGridTemplateColumn>
<sdk:DataGridTemplateColumn Header="密码" SortMemberPath="password" CanUserSort="True" CanUserResize="True" CanUserReorder="True">
<sdk:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<StackPanel Margin="5,0,5,0">
<TextBlock Text="{Binding password}">
</TextBlock>
</StackPanel>
</DataTemplate>
</sdk:DataGridTemplateColumn.CellTemplate>
</sdk:DataGridTemplateColumn>
<sdk:DataGridTemplateColumn >
<sdk:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<!--<Button x:Name="btnEdit" Content="编辑" Click="btnEdit_Click" />-->
</DataTemplate>
</sdk:DataGridTemplateColumn.CellTemplate>
</sdk:DataGridTemplateColumn>
</sdk:DataGrid.Columns>
</sdk:DataGrid>
<sdk:DataPager Height="26" HorizontalAlignment="Left" Margin="188,262,0,0" Name="dataPager1" PageSize="10" VerticalAlignment="Top" Width="200" PageIndexChanged="dataPager1_PageIndexChanged" />
</Grid>
</UserControl>
- 使用WCF实现服务器分页
- 使用WCF实现服务器向客户端的信息推送
- Easyui+EF+MVC+WCF实现分页
- Easyui+EF+MVC+WCF实现分页
- 使用简单的wcf文件实现上传,下载文件到服务器
- 使用WCF实现消息推送
- 第二节:ExtJS调用WCF系列-----分页排序列表实现
- wcf:数据太多如何实现分页的效果
- 使用asp实现分页
- 使用javascriptxml实现分页
- 使用javascriptxml实现分页
- 使用ROWNUM实现分页
- 使用javabean实现分页
- 使用row_number()实现分页
- 使用AspNetPager实现分页
- 使用ssm实现分页
- 使用PageHelper实现分页
- wcf使用netTcpBinding实现双工通信
- 面试体会
- <cf> Prizes, Prizes, more Prizes
- C语言插件机制(下)
- 对于排序 学习心得
- C#的interface关键字
- 使用WCF实现服务器分页
- JAVA 环境变量设置
- poj1149(最大流,构图较难)
- Explicit Interface Implementation
- netbean 乱码 (运行 编码 UTF-8 的不可映射字符)
- hdu 1875畅通工程再续-prim最小生成树
- 配置struts2和spring3
- JSF 2.0 中定义受管 Bean 的三种途径的比较
- 使用emacs时出现的问题