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


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

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

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

      UI上看不出什么,如今我们以代码说明怎样实现,使用RDIFramework.NET实现上面的界面代码很的简单,首先我们看下页面代码,代码例如以下: 

    <%@ 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',
                         winSize.width,
                        height: winSize.height,
                        nowrap: false, //折行
                        rownumbers: true, //行号
                        striped: true, //隔行变色
                        idField: 'ID', //主键
                        sortName: 'CREATEON',
                        sortOrder: 'desc',
                        singleSelect: true, //单选
                        frozenColumns: [[]],
                        columns: [[
                { title: '主键', field: 'ID',  120, hidden: true },
                    { title: '入库单编码', field: 'CODE',  130 },
                    { title: '入库日期', field: 'INDATE',  150 },
                         { title: '入库类型', field: 'INTYPE',  100 },
                    { title: '保管员', field: 'CUSTODIAN',  70 },
                    { title: '品名', field: 'FULLNAME',  100 },
                         { title: '数量', field: 'AMOUNT',  80 },
                    { title: '单位价格', field: 'UNITPRICE',  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://www.cnblogs.com/huyong
    微博: 腾讯
    Email: 406590790@qq.com
    QQ 交流:406590790 
    QQ群:16653241
    平台博客: 【CSDN】http://blog.csdn.net/chinahuyong
             【CNBLOGS】http://www.cnblogs.com/huyong
    关于作者:高级project师、信息系统项目管理师、DBA。专注于微软平台项目架构、管理和企业解决方式,多年项目开发与管理经验,曾多次组织并开发多个大型项目,精通DotNet,DB(SqlServer、Oracle等)技术。熟悉Java、Delhpi及Linux操作系统,有扎实的网络知识。在面向对象、面向服务以及数据库领域有一定的造诣。现从事DB管理与开发、WinForm、WCF、WebService、网页数据抓取以及ASP.NET等项目管理、开发、架构等工作。
    如有问题或建议,请多多赐教!
    本文版权归作者和CNBLOGS博客共同拥有,欢迎转载,但未经作者允许必须保留此段声明,且在文章页面明显位置给出原文连接,如有问题,能够通过邮箱或QQ 联系我,很感谢。

  • 相关阅读:
    linux基础知识之vi编辑器的使用
    Linux的通信命令
    Linux学习之文件的压缩与解压
    Liux文件操作
    Linux简单学习
    Drupal V7.3.1 框架处理不当导致SQL注入
    Typecho V1.1反序列化导致代码执行分析
    浅析PHP反序列化漏洞之PHP常见魔术方法(一)
    python正则表达式记录
    SQLmap源码分析之框架初始化(一)
  • 原文地址:https://www.cnblogs.com/blfshiye/p/4034485.html
Copyright © 2020-2023  润新知