天天看點

EasyUI+JavaWeb獎助學金管理系統[13]-機構分頁浏覽功能實作

1. 本章任務

機構浏覽功能與項目浏覽功能大體相似,但是由于機構擁有一個上級機構的自關聯字段,處理起來要比項目管理複雜一些。

需要注意的是,機構浏覽時需要顯示目前機構名稱和目前機構上級機構的名稱,此處需要聯表查詢。

2. 建立頁面

建立機構管理頁departManage.html,并引入easyui庫。

<head>
    <meta charset="UTF-8">
    <title>機構管理</title>
    <link rel="stylesheet" type="text/css" href="easyui/themes/default/easyui.css">
    <link rel="stylesheet" type="text/css" href="easyui/themes/icon.css">
    <link rel="stylesheet" type="text/css" href="css/main.css">
    <script type="text/javascript" src="easyui/jquery.min.js"></script>
    <script type="text/javascript" src="easyui/jquery.easyui.min.js"></script>
    <script type="text/javascript" src="easyui/locale/easyui-lang-zh_CN.js"></script>
</head>
3. 添加資料表格
頁面中添加datagrid資料表格:

    <table id="mainTable" title="機構清單" class="easyui-datagrid" url="CoreServlet?method=getDepartPage" pagination="true"
        singleSelect="true" fitColumns="true">
        <thead>
            <tr>
                <th data-options="field:'id',width:50">序号</th>
                <th data-options="field:'type',width:50" formatter="formatType">類型</th>
                <th data-options="field:'name',width:50">名稱</th>
                <th data-options="field:'parentName',width:100">上級機構</th>
            </tr>
        </thead>
    </table>

注意:

開啟分頁
類型這一列由于資料庫中存儲的是英文,需要轉換為對應中文顯示,是以添加formatType格式化方法
上級機構資料庫中隻存了parentId,但是頁面上我們顯示的時候需要顯示上級機構名稱,此處先寫上parentName。背景給網頁傳回資料時需要添加上級機構名稱。
格式化方法代碼如下:

    // 格式化類型
    function formatType(val, row) {
        if (val == "school") {
            return "學校";
        } else if (val == "college") {
            return "學院";
        } else {
            return "班級";
        }
    }
4. 封裝分頁查詢方法
封裝getDepartPage方法,傳回分頁資料,需要注意的是我們要多傳回一個parentName資訊。

修改CoreServlet如下:

        // 擷取機構分頁
        else if (method.equals("getDepartPage")) {
            DepartDao departDao = new DepartDao();
            total = departDao.getCount();
            result.setTotal(total);
            result.setRows(departDao.getPage(page, rows));
        }

修改Depart實體類如下,添加parentName資訊。

/**
 * 機構
 */
public class Depart {
    private String id;
    private String name;
    private String type;
    private String parentId;

    /**
     * 非資料庫字段,僅用于關聯查詢
     */
    private String parentName;
}

修改getPage方法,聯表查詢出parentName傳回。

/**
     * 分頁查詢(聯表)
     */
    public List<Depart> getPage(int page, int rows) throws Exception {
        Connection conn = ConnectionUtils.getConnection();
        String sql = "select son.*,parent.name as parentName from depart son left join depart parent on son.parentId=parent.id limit ?,?";
        QueryRunner runner = new QueryRunner();
        Object[] params = { (page - 1) * rows, rows };
        List<Depart> departs = runner.query(conn, sql, new BeanListHandler<Depart>(Depart.class), params);
        ConnectionUtils.releaseConnection(conn);
        return departs;
    }

5. 測試
建立一條測試資料 :

INSERT INTO `scholar-system`.`depart`(`id`, `name`, `type`, `parentId`) VALUES (1, '漢東大學', 'school', -1);      

此時頁面效果如下,注意由于該機構沒有上級機構,是以左連接配接後上級機構名稱為NULL,顯示為空。

EasyUI+JavaWeb獎助學金管理系統[13]-機構分頁浏覽功能實作

繼續閱讀