天天看点

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

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

  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

<code>&lt;%@ Page Language="C#" MasterPageFile="~/Site.Master"  AutoEventWireup="true" CodeBehind="ProductInMuliPage.aspx.cs" Inherits="RDIFramework.WebApp.demo.ProductInMuliPage" %&gt;</code>

<code>&lt;</code><code>asp:Content</code> <code>ID</code><code>=</code><code>"Content1"</code> <code>ContentPlaceHolderID</code><code>=</code><code>"head"</code> <code>runat</code><code>=</code><code>"server"</code><code>&gt;</code>

<code>&lt;/</code><code>asp:Content</code><code>&gt;</code>

<code>&lt;</code><code>asp:Content</code> <code>ID</code><code>=</code><code>"Content2"</code> <code>ContentPlaceHolderID</code><code>=</code><code>"ContentPlaceHolder1"</code> <code>runat</code><code>=</code><code>"server"</code><code>&gt;   </code>

<code>    </code><code>&lt;</code><code>div</code> <code>id</code><code>=</code><code>"toolbar"</code><code>&gt;</code>

<code>        </code><code>&lt;</code><code>a</code> <code>id</code><code>=</code><code>"a_add"</code> <code>style</code><code>=</code><code>"float:left"</code> <code>href</code><code>=</code><code>"javascript:;"</code> <code>plain</code><code>=</code><code>"true"</code> <code>class</code><code>=</code><code>"easyui-linkbutton"</code> <code>icon</code><code>=</code><code>"icon-add"</code> <code>title</code><code>=</code><code>"新增"</code><code>&gt;新增&lt;/</code><code>a</code><code>&gt;</code>

<code>        </code><code>&lt;</code><code>div</code> <code>class</code><code>=</code><code>'datagrid-btn-separator'</code><code>&gt;</code>

<code>        </code><code>&lt;/</code><code>div</code><code>&gt;</code>

<code>        </code><code>&lt;</code><code>a</code> <code>id</code><code>=</code><code>"a_edit"</code> <code>style</code><code>=</code><code>"float:left"</code> <code>href</code><code>=</code><code>"javascript:;"</code> <code>plain</code><code>=</code><code>"true"</code> <code>class</code><code>=</code><code>"easyui-linkbutton"</code> <code>icon</code><code>=</code><code>"icon-pencil"</code> <code>title</code><code>=</code><code>"修改"</code><code>&gt;修改&lt;/</code><code>a</code><code>&gt;</code>

<code>        </code><code>&lt;</code><code>div</code> <code>class</code><code>=</code><code>'datagrid-btn-separator'</code><code>&gt;&lt;/</code><code>div</code><code>&gt;</code>

<code>        </code><code>&lt;</code><code>a</code> <code>id</code><code>=</code><code>"a_delete"</code> <code>style</code><code>=</code><code>"float:left"</code> <code>href</code><code>=</code><code>"javascript:;"</code> <code>plain</code><code>=</code><code>"true"</code> <code>class</code><code>=</code><code>"easyui-linkbutton"</code> <code>icon</code><code>=</code><code>"icon-delete"</code> <code>title</code><code>=</code><code>"***"</code><code>&gt;***&lt;/</code><code>a</code><code>&gt;</code>

<code>    </code><code>&lt;/</code><code>div</code><code>&gt;</code>

<code>     </code><code>&lt;</code><code>table</code> <code>id</code><code>=</code><code>"list1"</code><code>&gt;&lt;/</code><code>table</code><code>&gt;      </code>

<code>    </code><code>&lt;</code><code>script</code> <code>type</code><code>=</code><code>"text/javascript"</code><code>&gt;</code>

<code>        </code><code>$(function () {           </code>

<code>            </code><code>autoResize({ dataGrid: '#list1', gridType: 'datagrid', callback: grid.bind, height: 0 });</code>

<code>            </code><code>$('#a_add').click(CRUD.add);</code>

<code>            </code><code>$('#a_edit').click(CRUD.edit);</code>

<code>            </code><code>$('#a_delete').click(CRUD.del);</code>

<code>        </code><code>});</code>

<code>        </code><code>var grid = {</code>

<code>            </code><code>bind: function (winSize) {</code>

<code>                </code><code>$('#list1').datagrid({</code>

<code>                    </code><code>url: '/demo/handler/ProductIn.ashx?action=GetMultiPage',</code>

<code>                    </code><code>toolbar: '#toolbar',</code>

<code>                    </code><code>title: "数据列表",</code>

<code>                    </code><code>iconCls: 'icon icon-list',</code>

<code>                    </code><code>width: winSize.width,</code>

<code>                    </code><code>height: winSize.height,</code>

<code>                    </code><code>nowrap: false, //折行</code>

<code>                    </code><code>rownumbers: true, //行号</code>

<code>                    </code><code>striped: true, //隔行变色</code>

<code>                    </code><code>idField: 'ID', //主键</code>

<code>                    </code><code>sortName: 'CREATEON',</code>

<code>                    </code><code>sortOrder: 'desc',</code>

<code>                    </code><code>singleSelect: true, //单选</code>

<code>                    </code><code>frozenColumns: [[]],</code>

<code>                    </code><code>columns: [[</code>

<code>            </code><code>{ title: '主键', field: 'ID', width: 120, hidden: true },</code>

<code>                </code><code>{ title: '入库单编码', field: 'CODE', width: 130 },</code>

<code>                </code><code>{ title: '入库日期', field: 'INDATE', width: 150 },</code>

<code>                </code><code>     { title: '入库类型', field: 'INTYPE', width: 100 },</code>

<code>                </code><code>{ title: '保管员', field: 'CUSTODIAN', width: 70 },</code>

<code>                </code><code>{ title: '品名', field: 'FULLNAME', width: 100 },</code>

<code>                </code><code>     { title: '数量', field: 'AMOUNT', width: 80 },</code>

<code>                </code><code>{ title: '单价', field: 'UNITPRICE', width: 150 }</code>

<code>                </code><code>    ]],</code>

<code>                    </code><code>pagination: true,</code>

<code>                    </code><code>pageSize: 5,</code>

<code>                    </code><code>pageList: [5, 10, 20]</code>

<code>                </code><code>});</code>

<code>            </code><code>},</code>

<code>            </code><code>getSelectedRow: function () {</code>

<code>                </code><code>return $('#list1').datagrid('getSelected');</code>

<code>            </code><code>reload: function () {</code>

<code>                </code><code>$('#list1').datagrid('clearSelections').datagrid('reload', { filter: '' });</code>

<code>            </code><code>}</code>

<code>        </code><code>};</code>

<code>    </code><code>&lt;/</code><code>script</code><code>&gt;</code>

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

<code>private</code> <code>string</code> <code>GetProductMultiPage()</code>

<code>{</code>

<code>    </code><code>var</code> <code>returnJson = </code><code>"[]"</code><code>;</code>

<code>    </code><code>var</code> <code>managerMain = </code><code>new</code> <code>CASE_PRODUCTIN_MAINManager(</code><code>this</code><code>.dbHelper, Utils.UserInfo);</code>

<code>   </code> 

<code>    </code><code>var</code> <code>_pageindex = pageindex &gt; 0 ? pageindex : 1;</code>

<code>    </code><code>var</code> <code>_pagesize = pagesize &gt; 0 ? pagesize : 20;</code>

<code>    </code><code>int</code> <code>recordCount;</code>

<code>    </code><code>managerMain.CurrentTableName = </code><code>@"(SELECT tab1.ID,tab1.CODE,tab1.INDATE,tab1.INTYPE,tab1.CUSTODIAN,tab1.CREATEON,tab2.FULLNAME,tab2.AMOUNT,tab2.UNITPRICE </code>

<code>                                        </code><code>FROM dbo.CASE_PRODUCTIN_MAIN tab1 </code>

<code>                                        </code><code>INNER JOIN dbo.CASE_PRODUCTIN_DETAIL tab2</code>

<code>                                        </code><code>ON tab1.ID = tab2.CASE_PRODUCTIN_MAIN_ID) pageData"</code><code>;</code>

<code>    </code><code>managerMain.SelectField = </code><code>"*"</code><code>;</code>

<code>    </code><code>var</code> <code>dtProductIn = managerMain.GetDTByPage(</code><code>out</code> <code>recordCount, _pageindex, _pagesize, </code><code>null</code><code>, </code><code>"CREATEON DESC"</code><code>);</code>

<code>    </code><code>if</code> <code>(dtProductIn != </code><code>null</code> <code>&amp;&amp; dtProductIn.Rows.Count &gt; 0)</code>

<code>    </code><code>{</code>

<code>        </code><code>returnJson = JSONhelper.FormatJSONForEasyuiDataGrid(recordCount, dtProductIn);</code>

<code>    </code><code>}</code>

<code>    </code><code>return</code> <code>returnJson;</code>

<code>}</code>

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

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

继续阅读