博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
RDIFramework.NET 中多表关联查询分页实例
阅读量:5885 次
发布时间:2019-06-19

本文共 3912 字,大约阅读时间需要 13 分钟。

 分页非常的常见,基本任何项目都会涉及到分页,这没什么好谈的,大多数我们分页对单表的分页比较多,对多表的分页我们可以通过视图来实现,当然还有其他的方式,在这儿,我以一个实例展示下使用我们的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,如需转载请自行联系原作者

你可能感兴趣的文章
大叔手记(3):Windows Silverlight/Phone7/Mango开发学习系列教程
查看>>
考拉消息中心消息盒子处理重构(策略模式)
查看>>
so easy 前端实现多语言
查看>>
【追光者系列】HikariCP源码分析之ConcurrentBag&J.U.C SynchronousQueue、CopyOnWriteArrayList...
查看>>
canvas系列教程05-柱状图项目3
查看>>
css绘制几何图形
查看>>
HTML标签
查看>>
理解JS中的Event Loop机制
查看>>
转载:字符编码笔记:ASCII,Unicode和UTF 8
查看>>
修复看不懂的 Console Log
查看>>
Android跨进程通信 AIDL使用
查看>>
ajax常见面试题
查看>>
结合kmp算法的匹配动画浅析其基本思想
查看>>
【d3.js v4基础】过渡transition
查看>>
VUEJS开发规范
查看>>
Android系统的创世之初以及Activity的生命周期
查看>>
人人都会数据采集- Scrapy 爬虫框架入门
查看>>
Android网络编程11之源码解析Retrofit
查看>>
韩国SK电讯宣布成功研发量子中继器
查看>>
TCP - WAIT状态及其对繁忙的服务器的影响
查看>>