silverlight   发布时间:2022-05-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了silverlight 服务器端分页实现大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

silverlight 服务器端分页实现                分类:            silverlight 2011-10-11 11:58 538人阅读 评论(0) 收藏 举报 silverlight 分页服务端分页就是在服务里面写分页的方法,silverlight 调用的时候传参数过来就行了。先看服务代码! 我这边使用的是wcf服务!类图如下: 服务写了两个方法,PageCo

silverlight 服务器端分页实现       

        分类            silverlight 538人阅读 评论(0) 收藏 举报

silverlight 分页服务端分页就是在服务里面写分页方法,silverlight 调用的时候传参数过来就行了。先看服务代码

我这边使用的是wcf服务!类图如下:

silverlight 服务器端分页实现

服务写了两个方法PageCount这个方法获取数据总条数,PageFilter用于分页。该方法接受三个参数,PageSize、PageIndex、Filter,当然分页的前两个参数是必不可少的,其他的参数可以根据实际情况来定义;如果你要根据用户名来过滤的话,加个String UserName就行了;废话不多说。直接看该方法代码

  1. using System
  2. using System.Collections.Generic; 
  3. using System.Linq; 
  4. using System.Runtime.serialization; 
  5. using System.serviceModel; 
  6. using System.Text; 
  7.  
  8. namespace Web 
  9. { 
  10.     // 注意: 使用“重构”菜单上的“重命名”命令,可以同时更改代码、svc 和配置文件中的类名“WebPageservice”。 
  11.     public class WebPageservice : IWebPageservice 
  12.     { 
  13.  
  14.         public List<PageEntity> PageFilter(int? PageSize,int PageIndex,String filter) 
  15.         { 
  16.             List<PageEntity> sources = PageEntity.CreatePagesources(); 
  17.             return sources.Skip((PageSize * (PageIndex - 1)).value).Take(PageSize.value).ToList(); 
  18.        
  19.  
  20.  
  21.         public int PageCount(String filter) 
  22.         { 
  23.             return 6; 
  24.        
  25.     } 
  26.  
  27.     public class PageEntity 
  28.     { 
  29.         public static List<PageEntity> CreatePagesources() 
  30.         { 
  31.             List<PageEntity> entitys = new List<PageEntity>(); 
  32.             entitys.Add(new PageEntity() 
  33.             { 
  34.                 UserName="aa"
  35.                 UserSex="男" 
  36.             }); 
  37.             entitys.Add(new PageEntity() 
  38.             { 
  39.                 UserName = "aaa"
  40.                 UserSex = "女" 
  41.             }); 
  42.             entitys.Add(new PageEntity() 
  43.             { 
  44.                 UserName = "aaa1"
  45.                 UserSex = "女" 
  46.             }); 
  47.             entitys.Add(new PageEntity() 
  48.             { 
  49.                 UserName = "aaa2"
  50.                 UserSex = "男" 
  51.             }); 
  52.             entitys.Add(new PageEntity() 
  53.             { 
  54.                 UserName = "aaa3"
  55.                 UserSex = "女" 
  56.             }); 
  57.             entitys.Add(new PageEntity() 
  58.             { 
  59.                 UserName = "aaa4"
  60.                 UserSex = "男" 
  61.             }); 
  62.  
  63.             return entitys; 
  64.        
  65.          
  66.  
  67.         public String UserName { get; set; } 
  68.  
  69.         public String UserSex { get; set; } 
  70.  
  71.         public int DataCount { get; set; } 
  72.  
  73.  
  74.     } 

@H_502_575@

PageFilter方法很简单,就通过LInq分下页,你也可以通过其他方式分页调用存储过程等!这个服务写好了。现在要做的就是silverlight 程序里面引用这个服务;

现在来看silverlight页面代码

  1. <UserControl xmlns:sdk="http://scheR_325_11845@as.microsoft.com/winfx/2006/xaml/presentation/sdk"  x:Class="Silverlight.MainPage" 
  2.     xmlns="http://scheR_325_11845@as.microsoft.com/winfx/2006/xaml/presentation" 
  3.     xmlns:x="http://scheR_325_11845@as.microsoft.com/winfx/2006/xaml" 
  4.     xmlns:d="http://scheR_325_11845@as.microsoft.com/expression/blend/2008" 
  5.     xmlns:mc="http://scheR_325_11845@as.openxmlformats.org/markup-compatibility/2006" 
  6.     mc:Ignorable="d" 
  7.     d:DesignHeight="300" d:DesignWidth="400"
  8.  
  9.     <Grid x:Name="LayoutRoot" BACkground="White"
  10.         <StackPanel> 
  11.             <sdk:DataGrid x:Name="dataGrid" Height="200"/> 
  12.             <sdk:DataPager x:Name="pager1" PageSize="2" PageIndexChanged="pager1_PageIndexChanged"></sdk:DataPager> 
  13.         </StackPanel> 
  14.     </Grid> 
  15. </UserControl> 

这个页面就放了一个DataGrid和DataPager;简单说下这个分页控件,点击分页的时候他会触发PageIndexChanged事件,还有在设置分页控件的source属性的时候他也会触发PageIndexChanged事件!

我的做法就是当服务器返回的数据总数和分页控件的数据总数不一致的时候在从新设置分页控件的source;贴代码

  1. using System
  2. using System.Collections.Generic; 
  3. using System.Linq; 
  4. using System.Net; 
  5. using System.Windows; 
  6. using System.Windows.Controls; 
  7. using System.Windows.Documents; 
  8. using System.Windows.Input; 
  9. using System.Windows.Media; 
  10. using System.Windows.Media.Animation; 
  11. using System.Windows.Shapes; 
  12. using Silverlight.Test.Pageservice; 
  13. using System.Windows.Data; 
  14.  
  15. namespace Silverlight 
  16. { 
  17.     public partial class MainPage : UserControl 
  18.     { 
  19.         public MainPage() 
  20.         { 
  21.             InitializeComponent(); 
  22.             Filter(); 
  23.        
  24.  
  25.       
  26.         private void pager1_PageIndexChanged(object sender,EventArgs E) 
  27.         { 
  28.              
  29.             Filter(); 
  30.        
  31.  
  32.         private void Filter() 
  33.         { 
  34.              
  35.             WebPageserviceClient client = new WebPageserviceClient(); 
  36.             client.PageCountCompleted += new EventHandler<PageCountCompletedEventArgs>(client_PageCountCompleted); 
  37.             client.PageCountAsync(String.Empty); 
  38.        
  39.  
  40.         void client_PageCountCompleted(object sender,PageCountCompletedEventArgs E) 
  41.         { 
  42.             if (e.Result < 1) 
  43.                 return
  44.             SetPagesource(e.Result); 
  45.  
  46.             var pageIndex = pager1.PageIndex + 1; 
  47.             WebPageserviceClient client = sender as WebPageserviceClient; 
  48.             client.PageFilterCompleted += new EventHandler<PageFilterCompletedEventArgs>(client_PageFilterCompleted); 
  49.             client.PageFilterAsync(pager1.PageSize,pageIndex,String.Empty); 
  50.        
  51.  
  52.  
  53.         void client_PageFilterCompleted(object sender,PageFilterCompletedEventArgs E) 
  54.         { 
  55.             dataGrid.Itemssource = e.Result; 
  56.        
  57.  
  58.         private void SetPagesource(int resultCount) 
  59.         { 
  60.             if (pager1.source != null && (pager1.source as PagedCollectionView).@R_834_10586@lItemCount == resultCount) 
  61.                 return
  62.             List<int> source = new List<int>(); 
  63.             for (int i = 0; i < resultCount; i++) 
  64.             { 
  65.                 source.Add(i); 
  66.             } 
  67.  
  68.             PagedCollectionView pagedCollection = new PagedCollectionView(sourcE)
  69.             Pager1.source = pagedCollection; 
  70.        
  71.     } 

服务端分页差不多完成!还有其他的方式大家拿出来分享下!

大佬总结

以上是大佬教程为你收集整理的silverlight 服务器端分页实现全部内容,希望文章能够帮你解决silverlight 服务器端分页实现所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。