国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當前位置: 首頁 - 科技 - 知識百科 - 正文

如何采用table和jQuery加載數據并實現數據與表格布局的分離

來源:懂視網 責編:小采 時間:2020-11-27 20:13:05
文檔

如何采用table和jQuery加載數據并實現數據與表格布局的分離

如何采用table和jQuery加載數據并實現數據與表格布局的分離:在日常開發工作中,總是遇到通過異步請求數據并用表格展示的的場景,看到很多解決此類問題通常采用拼字符串的形式,如://js示例代碼 var td1="<td>B000123</td>"; var td2="<td>張三</td&g
推薦度:
導讀如何采用table和jQuery加載數據并實現數據與表格布局的分離:在日常開發工作中,總是遇到通過異步請求數據并用表格展示的的場景,看到很多解決此類問題通常采用拼字符串的形式,如://js示例代碼 var td1="<td>B000123</td>"; var td2="<td>張三</td&g
在日常開發工作中,總是遇到通過異步請求數據并用表格展示的的場景,看到很多解決此類問題通常采用拼字符串的形式,如:

//js示例代碼
var td1="<td>B000123</td>";
var td2="<td>張三</td>";
var td3="<td>2017-09-17</td>";
var td4="<td><a href="#" class="btn btn-default">編輯</a></td>";
var tdn=......//此處省略好多列
var trString="<tr>"+td1+td2+td3+td4+tdn+"</tr>";
$("#tablelist").append(trString); //向ID為tablelist的表格追加行


以上的方式采用數據和表格混合的方式可以滿足需求并實現效果,但是遇到業務需求變動,導致表格列增加、減少、前后調整時,修改以上代碼回很苦惱,甚至導致形如【$(this).find('td').eq(6).find('input').val() 】的代碼直接報錯,原因就在于數據與布局沒有分離。

本著數據與布局分離的思想,把生成行的代碼分離出來,列的展現形式由表格決定,數據只負責向表格對應的列綁定數據即可,于是采用了以下方式:

HTML布局部分:

<table class="table table-hover" id="tablelist">
<thead>
 <tr class="active">
	<th fname="fnum">No.</th>
	<th fname="checkbox"><input type="checkbox" selectall="fid"/></th>
	<th fname="fempnum">編號</th>
	<th fname="fempname">姓名</th>
	<th fname="fstatus">狀態</th>
	<th fname="fredate">時間</th>
	<th fname="fope">操作</th>
 </tr>
</thead>
<tbody>

</tbody>
<tfoot>
 <tr class="active"><td>【分頁代碼】</td></tr>
</tfoot>
</table>

JS部分:

//定義表格ID
var tableListId= "tablelist";
//定義tfoot跨列數
var tablecolnum;
//定義表格列名
var colNames;
$(function () {
 //設置tfoot跨列數
 tablecolnum = setTablefootcolspan(tableListId);
 //獲得表格列名
 colNames = getTableListColNames(tableListId);
 //加載添加數據
 getDataTable(tablelistid)

});

//數據加載調用函數示例,現實應用場景是從服務器端請求Json方式
function getDataTable(objTableID) {
 removeTbodyHtml(tableListId); //移除tbody內容
 //定義數據格式
 row = {
 index:"",
 fnum: "",
 checkbox: "",
 fempnum: "",
 fempname: "",
 fredate: "",
 fstatus: "",
 fope: ""
 }


 //從接口獲取數據后改造以下過程
 for (i = 0; i < 6; i++) {
 //賦值
 row.index = i;
 row.fnum = i+1;
 row.checkbox = "<input type='checkbox' name='fid' value='" + i + "'/>";
 row.fempnum = "C000"+row.fnum;
 row.fempname = "張三" + row.fnum;
 row.fstatus = "已啟用";
 row.fredate = "2017-09-17 12:12:11";
 row.fope = "<a href='#' class='btn btn-default'>進入</a>";
 var trAttrs = " class='warning'"; //自定義行樣式,當然可以定義更多
 //綁定數據到表格, row.index 必須唯一否則會引起行之間相互覆蓋
 BindDataTable(objTableID, colNames, row.index, row, trAttrs)
 }
 }

//************綁定數據的通用JS函數 S**********

//獲得表格列名
function getTableListColNames(tableListId) {
 var colNames = [];
 var tablecolnum = $("#" + tableListId + " thead tr th").length;
 for (col = 0; col < tablecolnum; col++) {
 colNames[col] = $("#" + tableListId + " thead th:eq(" + col + ")").attr("fname");
 }
 return colNames;
}


//設置tfoot跨列數
function setTablefootcolspan(tableid) {
 tablecolnum = $("#" + tableid + " thead tr th").length;
 if ($("#" + tableid + " tfoot") != undefined) {
 $("#" + tableid + " tfoot tr td").attr("colspan", tablecolnum);
 }
 return tablecolnum;
}

//移除tbody
function removeTbodyHtml(objTableID) {
 $("#" + objTableID + " tbody").children().remove();
}



///加載表格數據
///objTableID: 表格ID
///colNames:表格列名數組
///rowsIdx: 主鍵索引值
///rows:數據模型
///trAttrs:行熟悉,可自定義
function BindDataTable(objTableID, colNames, rowsIdx,rows,trAttrs) {
 var trbefor="",trafter="",tdstr="";
 if(trAttrs==undefined){trAttrs="";}
 
 trbefor = "<tr rowid='tr" + rowsIdx + "' id='tr" + rowsIdx + "' "+trAttrs+">";
 for (col = 0; col < colNames.length; col++) {
 if (rows[colNames[col]] == undefined) {
 tdstr += "<td></td>";
 } else {
 tdstr += "<td>" + rows[colNames[col]] + "</td>";
 }
 }
 trafter= "</tr>";

 //判斷更新還是新增
 if ($("#" + objTableID + " tbody tr[rowid='tr" + rowsIdx + "']").length == 0)
 { 
 	$("#" + objTableID + " tbody").append(trbefor+tdstr+trafter); 
 }
 else
 { $("#" + objTableID + " tbody tr[rowid='tr" + rowsIdx + "']").html(tdstr); }

 tdstr = "";
}

 //************綁定數據JS函數 E**********

如此當表格需要調整時,只需要改變表格的Thead的位置即可,其他一切由數據決定,具體效果如下:


注意:

1. 表格必須有唯一id

2. 表格必須包括thead,tbody,tfoot屬性

3. 表格thead的單元格必須是 th 且必須有列明,如 fname="fname", 一一對應定義數據格式,如果不對應則不顯示該列

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

如何采用table和jQuery加載數據并實現數據與表格布局的分離

如何采用table和jQuery加載數據并實現數據與表格布局的分離:在日常開發工作中,總是遇到通過異步請求數據并用表格展示的的場景,看到很多解決此類問題通常采用拼字符串的形式,如://js示例代碼 var td1="<td>B000123</td>"; var td2="<td>張三</td&g
推薦度:
標簽: 表格 數據 如何
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top
主站蜘蛛池模板: 91精品啪国产在线观看免费牛牛 | 国产日韩欧美一区 | 国产一区二区三区在线看 | 国产一区二区精品久久 | 久久www免费人成精品香蕉 | 日韩欧美一二区 | 日本六十路丰满老太交尾 | 不卡国产视频 | 亚洲精品成人久久久影院 | 亚洲精品99久久久久中文字幕 | 全免费a级毛片免费毛视频 热re91久久精品国产91热 | 夜夜骑日日操 | 国产一区 在线播放 | 国产资源在线播放 | 特级全黄一级毛片视频 | 亚欧精品一区二区三区 | 国产全黄a一级毛片 | 亚洲欧洲在线观看 | 国产成人精品999在线观看 | 国产一区二区三区日韩欧美 | 亚洲一区 中文字幕 久久 | 日本一区二区三区免费观看 | 99久久亚洲精品影院 | 日本免费一区二区三区 | 久久久久亚洲精品美女 | 国产在线精品观看 | 伊人久久中文字幕久久cm | 国产一区在线视频 | 欧美精品一区二区三区免费 | 亚洲 欧美综合小说区图片区 | 国产成人青青热久免费精品 | 国产麻豆a一级毛片爽爽影院 | 国产一级二级三级 | 久久久网久久久久合久久久久 | 国产91精品久久久久久久 | 国产成人精品一区二区 | 国语对白91 | 亚洲欧美日韩另类精品一区二区三区 | 亚洲色欧美 | 久久久青青久久国产精品 | 视频国产精品 |