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

简介:

一:事出总有因:

 

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


版权声明:本文原创发表于博客园,作者为路过秋天,原文链接:

http://www.cnblogs.com/cyq1162/archive/2013/04/25/3040829.html

相关文章
|
1月前
|
JSON 前端开发 JavaScript
聊聊 Go 语言中的 JSON 序列化与 js 前端交互类型失真问题
在Web开发中,后端与前端的数据交换常使用JSON格式,但JavaScript的数字类型仅能安全处理-2^53到2^53间的整数,超出此范围会导致精度丢失。本文通过Go语言的`encoding/json`包,介绍如何通过将大整数以字符串形式序列化和反序列化,有效解决这一问题,确保前后端数据交换的准确性。
41 4
|
1月前
|
存储 JSON 监控
公司用什么软件监控电脑:JSON 在监控信息交互中的应用探索
在现代企业管理中,电脑监控软件广泛应用于保障信息安全和提升工作效率。JSON(JavaScript Object Notation)因其简洁和易读性,在监控信息的收集、传输和处理中扮演着关键角色。本文介绍了 JSON 在监控数据结构、信息传输及服务器端处理中的具体应用,展示了其在高效监控系统中的重要性。
38 0
|
2月前
|
存储 JSON 前端开发
JSON与现代Web开发:数据交互的最佳选择
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也便于机器解析和生成。它以文本格式存储数据,常用于Web应用中的数据传输,尤其是在客户端和服务器之间。
82 0
|
4月前
|
存储 SQL JSON
【Azure Logic App】微软云逻辑应用连接到数据库,执行存储过程并转换执行结果为JSON数据
【Azure Logic App】微软云逻辑应用连接到数据库,执行存储过程并转换执行结果为JSON数据
【Azure Logic App】微软云逻辑应用连接到数据库,执行存储过程并转换执行结果为JSON数据
|
4月前
|
JSON Java Android开发
Android 开发者必备秘籍:轻松攻克 JSON 格式数据解析难题,让你的应用更出色!
【8月更文挑战第18天】在Android开发中,解析JSON数据至关重要。JSON以其简洁和易读成为首选的数据交换格式。开发者可通过多种途径解析JSON,如使用内置的`JSONObject`和`JSONArray`类直接操作数据,或借助Google提供的Gson库将JSON自动映射为Java对象。无论哪种方法,正确解析JSON都是实现高效应用的关键,能帮助开发者处理网络请求返回的数据,并将其展示给用户,从而提升应用的功能性和用户体验。
115 1
|
4月前
|
JSON JavaScript Java
后端程序员的前后端交互核心-JSON
后端程序员的前后端交互核心-JSON
61 6
|
4月前
|
JSON 数据格式 Java
化繁为简的魔法:Struts 2 与 JSON 联手打造超流畅数据交换体验,让应用飞起来!
【8月更文挑战第31天】在现代 Web 开发中,JSON 成为数据交换的主流格式,以其轻量、易读和易解析的特点受到青睐。Struts 2 内置对 JSON 的支持,结合 Jackson 库可便捷实现数据传输。本文通过具体示例展示了如何在 Struts 2 中进行 JSON 数据的序列化与反序列化,并结合 AJAX 技术提升 Web 应用的响应速度和用户体验。
137 0
|
4月前
|
XML JSON 前端开发
JSON与AJAX:网页交互的利器
JSON与AJAX:网页交互的利器
41 0
|
5月前
|
JavaScript 前端开发 CDN
前端 JS 经典:package.json 属性详解
前端 JS 经典:package.json 属性详解
41 1
|
5月前
|
JSON 数据格式
前后端数据交互----application/json数据格式和请求数据样式{“xxxx“:“xxxx“}
前后端数据交互----application/json数据格式和请求数据样式{“xxxx“:“xxxx“}

热门文章

最新文章