版權聲明:本文為部落客原創文章,未經部落客允許不得轉載。 https://blog.csdn.net/chinahuyong/article/details/28416127
RDIFramework.NET 中多表關聯查詢分頁執行個體
RDIFramework.NET,基于.NET的快速資訊化系統開發、整合架構,給使用者和開發者最佳的.Net架構部署方案。該架構以SOA範式作為指導思想,作為異質系統整合與互操作性、分布式應用提供了可行的解決方案。
分頁非常的常見,基本任何項目都會涉及到分頁,這沒什麼好談的,大多數我們分頁對單表的分頁比較多,對多表的分頁我們可以通過視圖來實作,當然還有其他的方式,在這兒,我以一個執行個體展示下使用我們的RDIFramework.NET來實作多表聯合查詢分頁的實作,我以Web的形式展示,WinForm方法一樣,分頁後的界面如下圖所示:

<%@ 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”代碼如下:
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的類似。
作者:
EricHu出處:
http://blog.csdn.net/chinahuyong http://www.cnblogs.com/huyong/Email:
[email protected]QQ交流:406590790
QQ群:237326100
架構部落格:
http://blog.csdn.net/chinahuyong http://www.cnblogs.com/huyong RDIFramework.NET,基于.NET的快速資訊化系統開發、整合架構,給使用者和開發者最佳的.Net架構部署方案。
關于作者:進階工程師、資訊系統項目管理師、DBA。專注于微軟平台項目架構、管理和企業解決方案,多年項目開發與管理經驗,曾多次組織并開發多個大型項目,在面向對象、面向服務以及資料庫領域有一定的造詣。現主要從事基于
架構的技術開發、咨詢工作,主要服務于金融、醫療衛生、鐵路、電信、物流、物聯網、制造、零售等行業。
如有問題或建議,請多多賜教!
本文版權歸作者和CSDN共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接配接,如有問題,可以通過郵箱或QQ 聯系我,非常感謝。