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

简介:

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
<%@ Page Language="C#" MasterPageFile="~/Site.Master"  AutoEventWireup="true" CodeBehind="ProductInMuliPage.aspx.cs" Inherits="RDIFramework.WebApp.demo.ProductInMuliPage" %>
< asp:Content  ID = "Content1"  ContentPlaceHolderID = "head"  runat = "server" >
</ asp:Content >
< asp:Content  ID = "Content2"  ContentPlaceHolderID = "ContentPlaceHolder1"  runat = "server" >   
     < div  id = "toolbar" >
         < a  id = "a_add"  style = "float:left"  href = "javascript:;"  plain = "true"  class = "easyui-linkbutton"  icon = "icon-add"  title = "新增" >新增</ a >
         < div  class = 'datagrid-btn-separator' >
         </ div >
         < a  id = "a_edit"  style = "float:left"  href = "javascript:;"  plain = "true"  class = "easyui-linkbutton"  icon = "icon-pencil"  title = "修改" >修改</ a >
         < div  class = 'datagrid-btn-separator' ></ div >
         < a  id = "a_delete"  style = "float:left"  href = "javascript:;"  plain = "true"  class = "easyui-linkbutton"  icon = "icon-delete"  title = "***" >***</ a >
     </ div >
 
      < table  id = "list1" ></ table >      
     < script  type = "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);
         });
         var grid = {
             bind: function (winSize) {
                 $('#list1').datagrid({
                     url: '/demo/handler/ProductIn.ashx?action=GetMultiPage',
                     toolbar: '#toolbar',
                     title: "数据列表",
                     iconCls: 'icon icon-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”代码如下:  

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
private  string  GetProductMultiPage()
{
     var  returnJson =  "[]" ;
     var  managerMain =  new  CASE_PRODUCTIN_MAINManager( this .dbHelper, Utils.UserInfo);
    
     var  _pageindex = pageindex > 0 ? pageindex : 1;
     var  _pagesize = pagesize > 0 ? pagesize : 20;
     int  recordCount;
     managerMain.CurrentTableName =  @"(SELECT tab1.ID,tab1.CODE,tab1.INDATE,tab1.INTYPE,tab1.CUSTODIAN,tab1.CREATEON,tab2.FULLNAME,tab2.AMOUNT,tab2.UNITPRICE 
                                         FROM dbo.CASE_PRODUCTIN_MAIN tab1 
                                         INNER JOIN dbo.CASE_PRODUCTIN_DETAIL tab2
                                         ON tab1.ID = tab2.CASE_PRODUCTIN_MAIN_ID) pageData" ;
 
     managerMain.SelectField =  "*" ;
     var  dtProductIn = managerMain.GetDTByPage( out  recordCount, _pageindex, _pagesize,  null "CREATEON DESC" );
     if  (dtProductIn !=  null  && dtProductIn.Rows.Count > 0)
     {
         returnJson = JSONhelper.FormatJSONForEasyuiDataGrid(recordCount, dtProductIn);
     }
 
     return  returnJson;
}

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


本文转自yonghu86 51CTO博客,原文链接:http://blog.51cto.com/yonghu/1421976,如需转载请自行联系原作者

相关文章
|
29天前
|
开发框架 JavaScript .NET
asp.net中条件查询+分页
asp.net中条件查询+分页
15 1
|
1月前
|
SQL 数据库 C#
C# .NET面试系列十一:数据库SQL查询(附建表语句)
#### 第1题 用一条 SQL 语句 查询出每门课都大于80 分的学生姓名 建表语句: ```sql create table tableA ( name varchar(10), kecheng varchar(10), fenshu int(11) ) DEFAULT CHARSET = 'utf8'; ``` 插入数据 ```sql insert into tableA values ('张三', '语文', 81); insert into tableA values ('张三', '数学', 75); insert into tableA values ('李四',
62 2
C# .NET面试系列十一:数据库SQL查询(附建表语句)
|
4月前
|
SQL 开发框架 .NET
|
29天前
|
SQL 数据库
使用ADO.NET查询和操作数据
使用ADO.NET查询和操作数据
9 0
|
2月前
|
SQL 开发框架 .NET
ASP.NET WEB+EntityFramework数据持久化——考核练习库——1、用户管理系统(考点:查询列表、增加、删除)
ASP.NET WEB+EntityFramework数据持久化——考核练习库——1、用户管理系统(考点:查询列表、增加、删除)
67 0
|
4月前
|
开发框架 .NET
|
4月前
|
开发框架 .NET C#
|
3月前
|
开发框架 前端开发 .NET
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
38 0
|
30天前
|
开发框架 前端开发 .NET
进入ASP .net mvc的世界
进入ASP .net mvc的世界
28 0
|
30天前
mvc.net分页查询案例——mvc-paper.css
mvc.net分页查询案例——mvc-paper.css
5 0

相关课程

更多