如何實現DataGrid數據綁定?
①首先肯定需要有一個table標簽,給它定義一個id,在js中通過id.datagrid方法即可創建表格<table id="tt"></table>$('#tt').datagrid(options)
;②創建表格的列名有兩種方式:
第一種是直接在table標簽中定義,第二種是在js中定義:我使用的是第一種方式:<!-- 表格 --><table id="loginInfoTable"title="用戶信息一覽"border="0"cellspacing="0"cellpadding="0"iconCls="icon-edit"width="98%"idField="loginId"pagination="true"remoteSort="false"singleSelect="false"showFooter="false"striped="true"url="<%=root%>/ospm/loginInfo/doLoginInfoSearch.jhtml"><thead><tr align="center"><th field="ck" width="20" checkbox="true" width="20"></th><th field="loginCode" width="200">用戶名</th><th field="statuValue" width="100">狀態</th><th field="opt" formatter='optFormater' width="150">操作</th></tr></thead></table>③向后臺請求數據datagrid有一個屬性叫url,在進入頁面后,它會通過ajax方式向后臺發送請求,后臺封裝相應數據(JSON格式)再返回給前臺即可顯示。注意:datagrid在回調函數中必須獲得兩項json數據:
total表示查詢出的總結過,rows表示顯示在table中的數據集合。/*** 封裝Json數據*/long total = 0; // 符合查詢的總條數List<LoginInfoTableDto> lstTable = null; // 查詢結果total = (Long) mapLoginInfo.get(Constant4Ospm.TOTAL)
;if (mapLoginInfo.get(Constant4Ospm.SEARCH_RESULT) != null) {lstTable = (List<LoginInfoTableDto>) mapLoginInfo.get(Constant4Ospm.SEARCH_RESULT);} else {//注:如果從數據庫查詢不出數據,也必須封裝一個空的json集合,不然頁面就會報js錯誤lstTable = new ArrayList<LoginInfoTableDto>();}JSONObject datas = new JSONObject();// 設置總共有多少條記錄datas.put(Constant4Ospm.TOTAL, total)
;// 設置當前頁的數據datas.put(Constant4Ospm.PAGE_SIZE, lstTable)
;④后臺數據與表格關聯后臺過來的數據怎么與表格每一列對應呢?其實很簡單:后臺rows中包含了名叫LoginInfoTableDto的javabean-json集合,datagrid的field和idField對應LoginInfoTableDto中的一個屬性(大體上是這樣,當然field也可以不對應javabean的屬性,你可以進行一些轉換)。