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

概述

  分页控件很多人都写过,但不像DataPager那样要传入个PagedCollectionView才行,一般传入总记录数和分页大小就可以了,所以,我们给Datapager增加一个扩展方法来绑定总记录数和分页大小:  public static class DataPageExtension     {         public static void Bindsource(this Data@H_618_5@

DataPager实现服务器端分页

  分页控件很多人都写过,但不像DataPager那样要传入个PagedCollectionView才行,一般传入总记录数和分页大小就可以了,所以,我们给Datapager增加一个扩展方法来绑定总记录数和分页大小:

 public static class DataPageExtension
    {
        public static void Bindsource(this DataPager dataPager, int @R_689_10586@lCount, int pageSizE)
        {
            List list = new List(@R_689_10586@lCount);
            for (int i = 0; i < @R_689_10586@lCount; i++) list.Add(i);
            PagedCollectionView pcv = new PagedCollectionView(list);
            pcv.PageSize = pageSize;
            dataPager.source = pcv;
        }
    }
 


WCF服务端的分页方法如下:


[OperationContract]
        public List GetemployeeList(employeeFilter filter,out int @R_689_10586@lCount)
        {
            using (TestDBEntities db = new TestDBEntities())
            {
                int rowsCount = 0;
                StringBuilder sbsql = new StringBuilder("True ");
                if (filter.DeptID != new Guid())
                    sbsql.Append(String.Format("and it.Departments.DepartmentID = Guid'{0}'", filter.DeptID));
                sbsql.Append(String.Format("and it.Empolyeename like '%{0}%'", filter.EmpName));

                var query = from emp in db.employees.Where(sbsql.ToString())
                            SELEct new Myemployee
                            {
                                ID = emp.employeEID,
                                Name = emp.Empolyeename,
                                Sex = emp.employeeSex ? "男" : "女",
                                Age = emp.employeeAge,
                                Address = emp.employeeAddress,
                                deptname = emp.Departments.DepartmentName
                            };
                if (filter.PageIndex <= 0)
                    rowsCount = query.Count();
                @R_689_10586@lCount = rowsCount;
                query = query.orderBy(t => t.Name).Skip(filter.PageIndex * filter.PageSizE).Take(filter.PageSizE);
                return query.ToList();
            }
        }


上面的代码实现了使用Entity sql的动态查找功能分页功能,可以看到:只有当pageindex 等于0的时候才计算总记录数,提高了方法执行的效率;方法的输入参数和输出参数都进行了实体类的封装,建议在实际项目中也这样做,特别是在使用依赖注入的时候。

  在客户端(Silverlight项目)中引用好服务后,页面的cs代码如下:


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.Windows.Data;
using DataPagerTest.employeeserviceReference;

namespace DataPagerTest
{
    public partial class MainPage : UserControl
    {
        employeeserviceClient client = new employeeserviceClient();
        employeeFilter filter = new employeeFilter();
        public MainPage()
        {
            InitializeComponent();
        }
        private void UserControl_Loaded(object sender, RoutedEventArgs E)
        {
            dpemployee.PageIndexChanged += new EventHandler(dpemployee_PageIndexChanged);
            cbDept.SELEctionChanged += new SELEctionChangedEventHandler(cbDept_SELEctionChanged);
            BindComBox();
        }

        void cbDept_SELEctionChanged(object sender, SELEctionChangedEventArgs E)
        {
            BindGrid(0);
        }
        void dpemployee_PageIndexChanged(object sender, EventArgs E)
        {
            BindGrid(dpemployee.PageIndeX);
        }
        private void btnQuery_Click(object sender, RoutedEventArgs E)
        {
            BindGrid(0);
        }
        private void BindGrid(int pageIndeX)
        {
            Departments dept = cbDept.SELEctedItem as Departments;
            filter.DeptID = dept.DepartmentID;
            filter.EmpName = tbEmpName.Text.Trim();
            filter.PageIndex = pageIndex;
            filter.PageSize = 9;
            client.GetemployeeListCompleted += new EventHandler(client_GetemployeeListCompleted);
            client.GetemployeeListAsync(filter);
        }
        void client_GetemployeeListCompleted(object sender, GetemployeeListCompletedEventArgs E)
        {
            dgemployee.Itemssource = e.Result;
            if (filter.PageIndex <= 0)
                dpemployee.bindsource(e.@R_689_10586@lCount, filter.PageSizE);
        }
        void BindComBox()
        {
            client.GetDepartmentListCompleted += new EventHandler(client_GetDepartmentListCompleted);
            client.GetDepartmentListAsync();
        }

        void client_GetDepartmentListCompleted(object sender, GetDepartmentListCompletedEventArgs E)
        {
            cbDept.Itemssource = e.Result;
            cbDept.DisplaymemberPath = "DepartmentName";
            cbDept.SELEctedIndex = 0;
            BindGrid(0);
        }

        
        
    }
}


在PageIndex等于0的时候调用Bindsource扩展方法来绑定总记录数和页大小;里面还有个关于ComboBox的数据绑定方法。这样的分页方法不知大家有何评价,欢迎拍砖。
/本篇文章来源于Java秀,原文出处:http://www.java.sh/article/sliverlight/1237_2.html

大佬总结

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

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

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