RDIFramework.NET 中多表关联查询分页实例

RDIFramework.NET,基于.NET的快速信息化系统开发、整合框架,给用户和开发者最佳的.Net框架部署方案。该框架以SOA范式作为指导思想,作为异质系统整合与互操作性、分布式应用提供了可行的解决方案。

  分页非常的常见,基本任何项目都会涉及到分页,这没什么好谈的,大多数我们分页对单表的分页比较多,对多表的分页我们可以通过视图来实现,当然还有其他的方式,在这儿,我以一个实例展示下使用我们的RDIFramework.NET来实现多表联合查询分页的实现,我以Web的形式展示,WinForm方法一样,分页后的界面如下图所示:  

  UI上看不出什么,现在我们以代码说明如何实现,使用RDIFramework.NET实现上面的界面代码非常的简单,首先我们看下页面代码,代码如下:  

<%@PageLanguage="C#"MasterPageFile="~/Site.Master"AutoEventWireup="true"CodeBehind="ProductInMuliPage.aspx.cs"Inherits="RDIFramework.WebApp.demo.ProductInMuliPage"%><asp:ContentID="Content1"ContentPlaceHolderID="head"runat="server"></asp:Content><asp:ContentID="Content2"ContentPlaceHolderID="ContentPlaceHolder1"runat="server"><divid="toolbar"><aid="a_add"href="javascript:;"plain="true"class="easyui-linkbutton"icon="icon-add"title="新增">新增</a><divclass='datagrid-btn-separator'></div><aid="a_edit"href="javascript:;"plain="true"class="easyui-linkbutton"icon="icon-pencil"title="修改">修改</a><divclass='datagrid-btn-separator'></div><aid="a_delete"href="javascript:;"plain="true"class="easyui-linkbutton"icon="icon-delete"title="***">***</a></div><tableid="list1"></table><scripttype="text/javascript">$(function(){autoResize({dataGrid:'#list1',gridType:'datagrid',callback:grid.bind,height:0});$('#a_add').click(CRUD.add);$('#a_edit').click(CRUD.edit);$('#a_delete').click(CRUD.del);});vargrid={bind:function(winSize){$('#list1').datagrid({url:'/demo/handler/ProductIn.ashx?action=GetMultiPage',toolbar:'#toolbar',title:"数据列表",iconCls:'iconicon-list',width:winSize.width,height:winSize.height,nowrap:false,//折行rownumbers:true,//行号striped:true,//隔行变色idField:'ID',//主键sortName:'CREATEON',sortOrder:'desc',singleSelect:true,//单选frozenColumns:[[]],columns:[[{title:'主键',field:'ID',width:120,hidden:true},{title:'入库单编码',field:'CODE',width:130},{title:'入库日期',field:'INDATE',width:150},    {title:'入库类型',field:'INTYPE',width:100},{title:'保管员',field:'CUSTODIAN',width:70},{title:'品名',field:'FULLNAME',width:100},    {title:'数量',field:'AMOUNT',width:80},{title:'单价',field:'UNITPRICE',width:150}    ]],pagination:true,pageSize:5,pageList:[5,10,20]});},getSelectedRow:function(){return$('#list1').datagrid('getSelected');},reload:function(){$('#list1').datagrid('clearSelections').datagrid('reload',{filter:''});}};</script></asp:Content>

  上面的代码,我们就实现了页面部分,现在我们来看下分页的代码,分页在我们框架中已经做了很完美的支持,可以通过多种方式,支持不同类型的数据库的分页实现,直接调用接口方法即可实现。我们看下上面的页面部分调用的ashx中的方法“/demo/handler/ProductIn.ashx?action=GetMultiPage”代码如下:  

privatestringGetProductMultiPage(){varreturnJson="[]";varmanagerMain=newCASE_PRODUCTIN_MAINManager(this.dbHelper,Utils.UserInfo);var_pageindex=pageindex>0?pageindex:1;var_pagesize=pagesize>0?pagesize:20;intrecordCount;managerMain.CurrentTableName=@"(SELECTtab1.ID,tab1.CODE,tab1.INDATE,tab1.INTYPE,tab1.CUSTODIAN,tab1.CREATEON,tab2.FULLNAME,tab2.AMOUNT,tab2.UNITPRICEFROMdbo.CASE_PRODUCTIN_MAINtab1INNERJOINdbo.CASE_PRODUCTIN_DETAILtab2ONtab1.ID=tab2.CASE_PRODUCTIN_MAIN_ID)pageData";managerMain.SelectField="*";vardtProductIn=managerMain.GetDTByPage(outrecordCount,_pageindex,_pagesize,null,"CREATEONDESC");if(dtProductIn!=null&&dtProductIn.Rows.Count>0){returnJson=JSONhelper.FormatJSONForEasyuiDataGrid(recordCount,dtProductIn);}returnreturnJson;}

上面的代码可供开发者参考,这样不管你是多少表的关联查询,分页的问题都可以迎刃而解,WinForm的类似。

作者:EricHu出处:微博:Email:406590790@qq.comQQ交流:406590790QQ群:16653241平台博客:【CSDN】【CNBLOGS】关于作者:高级工程师、信息系统项目管理师、DBA。专注于微软平台项目架构、管理和企业解决方案,多年项目开发与管理经验,曾多次组织并开发多个大型项目,精通DotNet,DB(SqlServer、Oracle等)技术。熟悉Java、Delhpi及Linux操作系统,有扎实的网络知识。在面向对象、面向服务以及数据库领域有一定的造诣。现从事DB管理与开发、WinForm、WCF、WebService、网页数据抓取以及ASP.NET等项目管理、开发、架构等工作。如有问题或建议,请多多赐教!本文版权归作者和CNBLOGS博客共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,如有问题,可以通过邮箱或QQ联系我,非常感谢。