如何實(shí)現(xiàn)DataGrid數(shù)據(jù)綁定?
①首先肯定需要有一個(gè)table標(biāo)簽,給它定義一個(gè)id,在js中通過id.datagrid方法即可創(chuàng)建表格<table id="tt"></table>$('#tt').datagrid(options)
;②創(chuàng)建表格的列名有兩種方式:
第一種是直接在table標(biāo)簽中定義,第二種是在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">狀態(tài)</th><th field="opt" formatter='optFormater' width="150">操作</th></tr></thead></table>③向后臺請求數(shù)據(jù)datagrid有一個(gè)屬性叫url,在進(jìn)入頁面后,它會通過ajax方式向后臺發(fā)送請求,后臺封裝相應(yīng)數(shù)據(jù)(JSON格式)再返回給前臺即可顯示。注意:datagrid在回調(diào)函數(shù)中必須獲得兩項(xiàng)json數(shù)據(jù):
total表示查詢出的總結(jié)過,rows表示顯示在table中的數(shù)據(jù)集合。/*** 封裝Json數(shù)據(jù)*/long total = 0; // 符合查詢的總條數(shù)List<LoginInfoTableDto> lstTable = null; // 查詢結(jié)果total = (Long) mapLoginInfo.get(Constant4Ospm.TOTAL)
;if (mapLoginInfo.get(Constant4Ospm.SEARCH_RESULT) != null) {lstTable = (List<LoginInfoTableDto>) mapLoginInfo.get(Constant4Ospm.SEARCH_RESULT);} else {//注:如果從數(shù)據(jù)庫查詢不出數(shù)據(jù),也必須封裝一個(gè)空的json集合,不然頁面就會報(bào)js錯(cuò)誤lstTable = new ArrayList<LoginInfoTableDto>();}JSONObject datas = new JSONObject();// 設(shè)置總共有多少條記錄datas.put(Constant4Ospm.TOTAL, total)
;// 設(shè)置當(dāng)前頁的數(shù)據(jù)datas.put(Constant4Ospm.PAGE_SIZE, lstTable)
;④后臺數(shù)據(jù)與表格關(guān)聯(lián)后臺過來的數(shù)據(jù)怎么與表格每一列對應(yīng)呢?其實(shí)很簡單:后臺rows中包含了名叫LoginInfoTableDto的javabean-json集合,datagrid的field和idField對應(yīng)LoginInfoTableDto中的一個(gè)屬性(大體上是這樣,當(dāng)然field也可以不對應(yīng)javabean的屬性,你可以進(jìn)行一些轉(zhuǎn)換)。