一:事出总有因:

1:需要来源:

最近有网友给我问了一个需求功能,大体需要功能如下:

1:有一台服务器,以WebService或WCF方式提供数据。
2:有客户端(Web或Winform),调用远程WebService或WCF的数据,然后绑定显示表格数据,关键还需要带有分页功能。

2:解决方案: 

由于网友使用 CYQ.Data ,我给出了以下建议:

1:WebService 端:通过MAction,查询出表(MDataTable),再调用ToJson返回json输出。
2:客户端:通过调用调用远程的方法,接收返回的json字符串,然后用MDataTable.LoadFromJson方法,加载还原为表格,然后绑定到列表控件即可。
3:分页控件:http://www.cnblogs.com/cyq1162/category/259559.html

方法很简单,由于需要返回记录总数,所以可以返回“记录总数,Json“,然后接收后再分隔一下。

3:方案升级:

简单无极限,我想到了还可以再简单些的方式:

我扫了下MDataTable,由于继续自IDataReader,所以有几个属性,好像派不上用场,存在也像是个浪费。

其中一个是:RecordsAffected,意思是受影响的记录总数,通常这个值默认为-1,99.9999%用不上。

为了使使用更简单,本人进行了以下的改进:

1:把调用Select分页查询后,把记录总数赋值给MDataTalle属性RecordsAffected。
2:对于ToJson方法输出,把记录总数也一并集在json中。
3:MDataTable.LoadFromJson时,可以还原记录总数到RecordsAffected属性。

有了以上改进,直接返回json即可,还原时也可以从RecordsAffected拿回记录总数,绑定到分页。

二:代码示例:

花了些时间,写了一个Demo:

1:解决方案: 

2:界面Html:

3:WebService的代码示例:

为了方便,这里用了文本数据库示例:

namespace MyService
{
    /// <summary>
    /// UsersService 的摘要说明
    /// </summary>
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [ToolboxItem(false)]
    public class UsersService : System.Web.Services.WebService
    {

[WebMethod]
        public string GetTableJson(int pageIndex, int pageSize)
        {
            CreateRow(pageIndex);
            MDataTable dt;
            using (Users u = new Users())
            {
                int count = 0;
                dt = u.Select(pageIndex, pageSize, “id>1", out count);
            }
            return dt.ToJson();
        }
        //产生表的数据
        private void CreateRow(int index)
        {
            if (index == 1)
            {
                using (Users u = new Users())
                {
                    for (int i = 0; i < 30; i++)
                    {

u.UserName = i.ToString();
                        u.CreateTime = DateTime.Now;
                        u.Insert();
                    }
                }
            }
        }
    }
    //为了省事,这里采用文本数据库做为示例。
    public class Users : CYQ.Data.Orm.OrmBase
    {
        public Users()
        {
            base.SetInit(this, "Users", "Txt Path={0}");
        }
        private int _ID;

public int ID
        {
            get
            {
                return _ID;
            }
            set
            {
                _ID = value;
            }
        }
        private string _UserName;

public string UserName
        {
            get
            {
                return _UserName;
            }
            set
            {
                _UserName = value;
            }
        }
        private DateTime _CreateTime;

public DateTime CreateTime
        {
            get
            {
                return _CreateTime;
            }
            set
            {
                _CreateTime = value;
            }
        }

}

}

4:Web界面的代码:

namespace Web
{
    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                LoadData();
            }
        }
        public void LoadData()
        {
            MyService.UsersService us = new MyService.UsersService();
            string json= us.GetTableJson(pager1.PageIndex, pager1.PageSize);
            MDataTable dt = MDataTable.LoadFromJson(json);
            dt.Bind(gvUsers);
            pager1.Count = dt.RecordsAffected;
            pager1.BindName = "LoadData";
        }
    }
}

最终简单的效果图:

以上就是 CYQ.Data V5版本MDataTable的RecordsAffected属性的应用场景之一。

示例源码打包下载(对于WebService可能需要重新添加引用下): Web.rar

MDataTable属性RecordsAffected新应用:WebService与Json交互的记录总数相关推荐

  1. Teams Bot 如何使用新的 System.Text.Json 库

    我最近把 LuckyDraw的代码升级到了 .net core 3.1,当然我也很想使用最新的微软json库,System.Text.Json这个库的性能比之前Newtonsoft.Json速度更快, ...

  2. [译]试用新的System.Text.Json API

    译注 尝试新的System.Text.Json API 对于.NET Core 3.0,我们 提供了一个名为System.Text.Json的全新命名空间 ,支持读取器/写入器,文档对象模型(DOM) ...

  3. .NET 6 新特性 System.Text.Json 中的 Writeable DOM

    .NET 6 新特性 System.Text.Json 中的 Writeable DOM 特性 Intro 在 .NET 6 Preview 4 中,微软加入了 JSON Node 的支持,我们可以动 ...

  4. WebForm使用HttpWebRequest 调用webservice返回json

    WebForm使用HttpWebRequest 调用webservice返回json 调用webservice部分:返回的是json 调用webservice部分:返回的是json public st ...

  5. java多图片上传json_[Java教程]SpringMVC框架五:图片上传与JSON交互

    [Java教程]SpringMVC框架五:图片上传与JSON交互 0 2018-08-07 22:00:42 在正式图片上传之前,先处理一个细节问题: 每一次发布项目,Tomcat都会重新解压war包 ...

  6. java多图片上传json_SpringMVC框架五:图片上传与JSON交互

    在正式图片上传之前,先处理一个细节问题: 每一次发布项目,Tomcat都会重新解压war包,之前上传过的图片会丢失 为了解决这个问题:可以不在Tomcat下保存图片,而是另找一个目录. 上传图片: 在 ...

  7. Spring Mvc 数据回显、异常处理、文件上传、json交互、ResTful、拦截器的使用(高级三)

    1,数据回显 SpringMvc包含三种数据回显机制 第一种:对于简单数据类型,如:Integer.String.Float等使用Model将传入的参数再放到request域实现显示. (回顾jsp四 ...

  8. html5 java交互_html5+jquery与ssm进行json交互集成项目

    [实例简介] eclipse 下html5+jquery+springmvc+spring+mybatis进行json交互集成项目,基础搭建项目,具体版本参考lib下包的版本号 [实例截图] [核心代 ...

  9. 封神台之萌新也能找CMS漏洞整理记录

    封神台之萌新也能找CMS漏洞整理记录 工具 信息收集 通过后台直接获取SHELL 使用终端shell 工具 御剑后台扫描工具 ,BurpSuite, 菜刀.蚁剑 信息收集 靶场地址 后台地址 先扫下敏 ...

  10. 前后端分离 - 统一JSON 交互

    1.应用场景 主要用于前后端分离, 统一JSON 交互方式 2.学习/操作 1.文档阅读 都前后端分离了,咱就别做页面跳转了!统统 JSON 交互__江南一点雨的博客-CSDN博客_前后端分离页面跳转 ...

最新文章

  1. macos降级_macOS Big Sur如何降级
  2. cmake重新编译matlab,ubuntu系统下cmake 编译matlab中mex文件
  3. html文本超出自动换行、显示省略号
  4. mysql 数据类型 decimal_mysql decimal、numeric数据类型
  5. jpa 多层嵌套一对多_OpenJPA-嵌套的一对多关系合并问题
  6. 了解计算机中的信息编码教案,五年级下册信息技术《奇妙的编码》教学设计
  7. python 模拟浏览器selenium_使用Selenium模拟浏览器,实现自动爬取数据
  8. 线性回归(二)---多元线性回归
  9. SQL语句更改数据库名,表名,列名
  10. asp向不同的用户发送信息_使用 Linux 命令行与其他用户进行通信 | Linux 中国
  11. 项目案例:浙江宁波江北区道路照明智慧化改造见成效
  12. 银耳椰椰——Alpha冲刺Day04
  13. java+es+nested_Elasticsearch中的关联查询。Nested类型介绍及查询原理。。
  14. mac 绑定阿里企业邮箱
  15. Redis expire
  16. 芯片附近为什么都放 0.1uF 电容 ?
  17. 最常见加密方式和Python实现
  18. k8s1.18 StorageClass 使用rbd-provisioner提供ceph rbd持久化存储
  19. 方程组的两种理解方式(线性代数及其应用【2】)
  20. 如何访问kubernetes API?

热门文章

  1. C语言中的++和--
  2. Spark系列(三)SparkContext分析
  3. 拥抱SQLAlchemy 之二 拉拉手,我请你去看电影~
  4. tpc的time-wait
  5. PostgreSQL 之 分区表
  6. C语言 · 图形输出
  7. python Asyncore.dispatcher 理解
  8. CSS3 Media Queries模板
  9. (转载)Silverlight同步(Synchronous)调用WCF服务
  10. 洛谷1091 合唱队形