这次datagridview绑定数据并分页操作,因为用到了webservice,所以代码会详细讲解。QueryByCondition是一个查询函数

客户端:

PageData pageData=new PageData();//用来接收数据
public bool QueryByCondition(Entity.ProductStatus status, int pageIndex)
{
       SoapHeaderTransferData();//webservice 的soap身份验证,它的作用能够访问webservice服务端,如果你没有使用webservice,则不用加。
string query_condition = txt_title.Text.Trim().ToString();//查询条件
        //返回string类型,序列化,其实是类实体转化为string,方便在webservice之间传输。
string str = ps.QueryByCondition(query_condition, (pm.ProductStatus)Enum.Parse(typeof(pm.ProductStatus),status.ToString()),
             user_id, pageIndex, pageSize);//有五个参数,前三个是查询条件,后两个是分页条件,pageIndex是当前页根据自己的需要输入, pageSize是一页有多少条数据,也是根据需要输入
if (str == null)
{
return false;
}
else
{
          //将str反序列化,获得类实体数据
pageData = VCommons.ObjectXmlExtensions.ToObj<Entity.Ot.PageData>(VCommons.Utils.UrlDecode(str));
this.DataGridViewProduct.AutoGenerateColumns = false;//设置datagridview不能够自动添加列
this.DataGridViewProduct.DataSource = pageData.Data;
DataGridViewProduct.ClearSelection();
lblPageCount.Text = pageData.TotalPage.ToString();
lbCurrentPage.Text = pageData.PageIndex.ToString();
return true;
}
}

服务端:

#region 按条件查询产品信息
[SoapHeader("myHeader")]
[WebMethod(EnableSession = true)]
public string QueryByCondition(string query_condition, Entity.ProductStatus status, string userid, int pageIndex, int pageSize)
{
      //进行身份验证
if (myHeader.CheckLogin())
{
using (var repository = new DataE.VAERP.Repository())
{
            //根据条件查询数据
var linq = from product in repository.GetIQueryable<Entity.VAERP.Product>()
join data in repository.GetIQueryable<Entity.VAERP.ProductData>()
on product.ID equals data.ProductID
where (product.UserID == userid || data.SellerID == userid) && product.Status == status
select product;
IQueryable<Entity.VAERP.Product> pros = string.IsNullOrWhiteSpace(query_condition) ? linq :
linq.Where(item => item.Title.StartsWith(query_condition) || item.Title.EndsWith(query_condition) || item.Title.IndexOf(query_condition) != -);

              //进行分页操作
             var pageData = new Entity.PagedList<Entity.VAERP.Product>(pros, pageIndex, pageSize); //序列化
var str = VCommons.Utils.UrlEncode(new Entity.Ot.PageData() { Data = pageData.ToArray(), PageIndex = pageData.PageIndex, PageSize = pageData.PageSize, TotalPage = pageData.TotalPages }.ToXml());
return str;
}
}
else
{
return VCommons.Utils.UrlEncode(new Entity.PagedList<Entity.VAERP.Product>(null, pageIndex, pageSize).ToXml());
}
}
#endregion

分页方法PagedList(,,)

 public PagedList(IQueryable<T> source, int index, int pageSize)
{
if (source != null) //判断传过来的实体集是否为空
{
int total = source.Count();
this.TotalCount = total;
this.TotalPages = total / pageSize; if (total % pageSize > )
TotalPages++; this.PageSize = pageSize;
if (index > this.TotalPages)
{
index = this.TotalPages;
}
if (index < )
{
index = ;
}
this.PageIndex = index;
this.AddRange(source.Skip((index - ) * pageSize).Take(pageSize).ToList()); //Skip是跳到第几页,Take返回多少条
}
}

winfrom之datagridview分页显示的更多相关文章

  1. DataGridView 分页显示

    DataGridView 分页显示函数 1.获取当前页的子数据表函数 public static DataTable GetPagedTable(DataTable dt, int PageIndex ...

  2. C# DataGridView分页显示

    //导入命名空间部分省略 DBClass.DBExecute dbexecute = new DBExecute(); string connectionString = @"Data So ...

  3. winform里dataGridView分页代码,access数据库

    winform里dataGridView分页,默认dataGridView是不分页的和webform里不一样,webform中GridView自带自带了分页. 现在c/s的程序很多时候也需要webfo ...

  4. C# 实现DataGridView分页功能

    C#实现DataGridView分页功能 2010-07-17 13:45:42|  分类: C#|字号 订阅     从界面可以看到,在设计时需要一个DataGridView.BindingNavi ...

  5. C#关于分页显示

    ---<PS:本人菜鸟,大手子还请高台贵手> 以下是我今天在做分页时所遇到的一个分页显示问题,使用拼写SQL的方式写的,同类型可参考哦~ ------------------------- ...

  6. 多页的TIFF图片在aspx页面分页显示

    一.逻辑实现:将数据库中的二进制TIFF图片读出并分页显示在页面上. 1.显示界面 public FrameDimension MyGuid; ; ; public static MemoryStre ...

  7. asp.net gridview 分页显示不出来的问题

    使用gridview分页显示,在点击第二页的时候显示空白,无数据. 原因是页面刷新,绑定datatable未执行 解决方法: 1.将datatable设置为静态 2.在OnPageIndexChang ...

  8. SSRS(rdl报表)分页显示表头和对表头的冻结处理

    基础环境 最近在公司做西门子某系统的二次开发,需要用到SQLServer Reporting Services(SSRS).我们用的SQL版本是SQLServer 2008 R2:在设计报表时,表格用 ...

  9. JSP分页显示实例(基于Bootstrap)

    首先介绍一款简单利落的分页显示利器:bootstrap-paginator 效果截图: GitHub官方下载地址:https://github.com/lyonlai/bootstrap-pagina ...

随机推荐

  1. 本地yum仓库搭建,使用163yum源

    如果内部网络没有连接Internet就在本地配置yum仓库 将操作系统镜像上传到服务器中,进行挂载 mount –o loop rhel-server-6.7-x86_64-dvd.iso /mnt ...

  2. 如何定义一个有效的OWIN Startup Class

    命名约定 Katana在程序集内的程序集名称空间下查找一个叫做Startup的类, 通过属性指定 [assembly: OwinStartup(typeof(OwinConsoleApp.Startu ...

  3. T-SQL基础(六)之可编程对象

    变量 -- 声明变量 DECLARE @variable_name [AS] variable_type; -- 变量赋值 SET @variable_name = variable_value; 示 ...

  4. Syncrhonized 和 Lock的区别和使用

    相信很多小伙伴们初学多线程的时候会被这两个名词搞晕,所以这里专门介绍这两种实现多线程锁的方式的区别和使用场景 Synchronized 这个关键词大家肯定都不陌生,具体的用法就是使用在对象.类.方法上 ...

  5. es6 语法 (Promise)

    { // 基本定义 let ajax = function(callback) { console.log('执行'); //先输出 1 执行 setTimeout(function() { call ...

  6. Ubuntu快捷键、Ubuntu终端常用命令

    Ubuntu快捷键 0.Ctrl + Alt + t 打开终端,在终端命令行操作 1. Ctrl + W: 关闭当前 Nautilus 窗口 2. Ctrl+T: 在 Nautilus 打开新的 Ta ...

  7. Android开启相机预览获取Yuv视频流数据

    自定义SurfaceView 主要步骤: 实现SurfaceHolder.Callback接口,创建SurfaceView的生命周期 实现Camera.PreviewCallback接口,创建预览回调 ...

  8. <自动化测试方案_1>第一章、为什么要做自动化测试?(Why)

    第一章.为什么要做自动化测试?(Why) 测试的产品分为:桌面程序(C/S).web应用(B/S) 我们的产品是B/S (一)迭代中省去人力测试非新增功能: 在项目中由于测试时间的限制,测试中只能实现 ...

  9. MyBatis-Plus初步使用

    在使用mybatis的过程中,我们会发现需要自己写很多的mapper和mapper.xml配置文件,很多时候会写到相当多的重复代码,特别是普通的增删改查,这样不仅会影响我们的开发效率,也会使得代码变的 ...

  10. git 入门教程之版本控制

    版本控制 我们知道 git 是分布式版本控制系统,所以称被控制对象是版本本身没错,但是从git 命令中发现,并没有版本这个名词,有的只是commit,所以前几节我一直称其为提交. 为了避免后续教程引发 ...