MDataTable属性RecordsAffected新应用:WebService与Json交互的记录总数
2023-09-11 14:21:17 时间
1:有一台服务器,以WebService或WCF方式提供数据。
2:有客户端(Web或Winform),调用远程WebService或WCF的数据,然后绑定显示表格数据,关键还需要带有分页功能。
2:客户端:通过调用调用远程的方法,接收返回的json字符串,然后用MDataTable.LoadFromJson方法,加载还原为表格,然后绑定到列表控件即可。
1:把调用Select分页查询后,把记录总数赋值给MDataTalle属性RecordsAffected。 2:对于ToJson方法输出,把记录总数也一并集在json中。 3:MDataTable.LoadFromJson时,可以还原记录总数到RecordsAffected属性。
{
/// 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;
}
}
}
{
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";
}
}
}
ASP.NET MVC中JSON强制小写属性名称 首先需要引用Newtonsoft.Json using Newtonsoft.Json; using Newtonsoft.Json.Serialization; 然后转换对象 Model.JsonResult jsonResult = new Model.
Asp.net MVC5 返回json数据忽略序列化属性 在属性上添加 [ScriptIgnore] 特性,命名空间是System.Web.Script.Serialization用心做好每一件事,结果会给你最大的惊喜!
javascript 对象属性的添加,删除,json对象和字符串转换方法等 1:动态添加 对象属性 var obj = new Object(); console.log (obj.username); obj.username = haha console.log (obj.username); //undefined //haha 用 [] 表示。
2:有客户端(Web或Winform),调用远程WebService或WCF的数据,然后绑定显示表格数据,关键还需要带有分页功能。
2:客户端:通过调用调用远程的方法,接收返回的json字符串,然后用MDataTable.LoadFromJson方法,加载还原为表格,然后绑定到列表控件即可。
方法很简单,由于需要返回记录总数,所以可以返回“记录总数,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
ASP.NET MVC中JSON强制小写属性名称 首先需要引用Newtonsoft.Json using Newtonsoft.Json; using Newtonsoft.Json.Serialization; 然后转换对象 Model.JsonResult jsonResult = new Model.
Asp.net MVC5 返回json数据忽略序列化属性 在属性上添加 [ScriptIgnore] 特性,命名空间是System.Web.Script.Serialization用心做好每一件事,结果会给你最大的惊喜!
javascript 对象属性的添加,删除,json对象和字符串转换方法等 1:动态添加 对象属性 var obj = new Object(); console.log (obj.username); obj.username = haha console.log (obj.username); //undefined //haha 用 [] 表示。
相关文章
- jsp中submit的连接属性是什么?
- 简单理解javascript中的原型对象,实现对之间共享属性和行为
- Matlab中访问属性值
- 每日一学—text-decoration 属性
- 《SAP HANA平台应用开发》—第3章3.2节属性视图
- [转]超链接标签简单的几个样式属性
- Python 父类的 私有属性 和 私有方法
- Xamarin Android提示找不到资源属性定义
- 【快应用】表单组件的model属性实际运用
- 快应用如何避免读取undefined变量的属性导致报错
- 《HTML5移动应用开发入门经典》—— 第2章 移动开发中新的HTML5标签和属性
- 《HTML5移动应用开发入门经典》—— 2.3 HTML 4标签和属性的变化
- UIView属性clipsTobounds的应用
- iOS UIView非常用方法及属性详解
- struts2访问或添加几个属性(request/session/application属性)
- 浅析Object.assign()基本用法(对象合并、同名属性覆盖、仅1个参数时直接返回、target不是对象会转成对象、源对象位置为非对象时不同的处理规则-字符串的特殊情况、拷贝的属性限制)及需要注意的点(浅拷贝、同名属性替换、数组的处理-把索引当属性替换、取值函数先取值再拷贝)和常见应用(给对象添加属性、合并多个对象、给属性设置默认值)
- 微盟电子商城网络交易系统——Day05【商品服务-平台属性、新增商品、商品管理、仓库管理】
- java中获取系统属性以及环境变量
- weex-使用Vue.set设置属性和使用this.xxx设置属性的区别
- Vue学习第30天——router-link的push和replace属性
- 【转】C#通过Expression获取指定属性的名称
- JavaScript 动态添加、移除元素或属性