程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> JSP編程 >> 關於JSP >> JSP 前端數據本地排序實例代碼

JSP 前端數據本地排序實例代碼

編輯:關於JSP

在前端中我們經常需要數據的排序,首先寫引入我寫好的js

$(function($) {
  $('#sclazzId').val($('#voId').val());
  document.getElementsByName('nameup')[0].style.display = "none";
  document.getElementsByName('nameup')[1].style.display = "none";
  document.getElementsByName('nameup')[2].style.display = "none";
  document.getElementsByName('nameup')[3].style.display = "none";
  var tabobj = document.getElementById("tbValue");
  /*
   * for (var i = 2; i < tabobj.rows.length; i++) {
   * 
   * if (tabobj.rows[i].cells[1].innerHTML == code) {
   * 
   * tabobj.rows[i].style.backgroundColor = "red";
   * 
   * break; } }
   */
});
function OnChange(code) {
  // alert(document.getElementById("drpIndustry").value+"_"+code+".html");
  window.location.href = document.getElementById("drpIndustry").value + "_"
      + code + ".html";

}

// 轉換器,將列的字段類型轉換為可以排序的類型:String,int,float
function convert(sValue, sDataType) {
  switch (sDataType) {
  case "int":
    if (sValue != "--")
      return parseInt(sValue);
    else
      return -10000000000000;
  case "float":
    if (sValue != "--")
      return parseFloat(sValue);
    else
      return -10000000000000.0;
  case "date":
    if (sValue != "--")
      return new Date(Date.parse(sValue));
    else
      return "1900-01-01";
  default:
    return sValue.toString();

  }
}

// 排序函數產生器,iCol表示列索引,sDataType表示該列的數據類型
function generateCompareTRs(iCol, sDataType) {

  return function compareTRs(oTR1, oTR2) {
    var vValue1 = convert(oTR1.cells[iCol].firstChild.nodeValue, sDataType);
    var vValue2 = convert(oTR2.cells[iCol].firstChild.nodeValue, sDataType);

    if (vValue1 < vValue2) {
      return -1;
    } else if (vValue1 > vValue2) {
      return 1;
    } else {
      return 0;
    }
  };
}
// 排序方法
function sortTable(sTableID, iCol, sDataType) {
  if (document.getElementsByName('nameup')[parseInt(iCol) - 1].style.display == 'none') {
    document.getElementsByName('nameup')[parseInt(iCol) - 1].style.display = 'block';
    document.getElementsByName('namedown')[parseInt(iCol) - 1].style.display = 'none';
  } else {
    document.getElementsByName('nameup')[parseInt(iCol) - 1].style.display = 'none';
    document.getElementsByName('namedown')[parseInt(iCol) - 1].style.display = 'block';
  }
  var oTable = document.getElementById(sTableID);
  var oTBody = oTable.tBodies[0];
  var colDataRows = oTBody.rows;
  var aTRs = new Array;
  // 將所有列放入數組
  for (var i = 0; i < colDataRows.length; i++) {
    aTRs[i] = colDataRows[i];
  }
  // 判斷最後一次排序的列是否與現在要進行排序的列相同,是的話,直接使用reverse()逆序
  if (oTable.sortCol == iCol) {
    aTRs.reverse();
  } else {
    // 使用數組的sort方法,傳進排序函數
    aTRs.sort(generateCompareTRs(iCol, sDataType));
  }

  var oFragment = document.createDocumentFragment();
  for (var i = 0; i < aTRs.length; i++) {
    aTRs[i].cells[0].innerHTML = i + 1;
    oFragment.appendChild(aTRs[i]);
  }

  oTBody.appendChild(oFragment);
  // 記錄最後一次排序的列索引
  oTable.sortCol = iCol;
}

function detatilWork(id) {
  alert(id);
  $.post("", {
    id : id
  }, function() {

  });
}

function reflash() {
  window.location.reload(true);
}

function openSearch() {
  var name = $('#sname').val();
  var clazzId = $('#sclazzId').val();
  window.location.href = "assistantWork.action?name=" + name + "&clazzId="
      + clazzId;
}

function lastPage(page) {
  var name = $('#sname').val();
  var clazzId = $('#sclazzId').val();
  page = (page - 1 < 0) ? 0 : (page - 1);
  window.location.href = "assistantWork.action?page=" + page + "&name="
      + name + "&clazzId=" + clazzId;
}
function selPage(page) {
  var name = $('#sname').val();
  var clazzId = $('#sclazzId').val();
  window.location.href = "assistantWork.action?page=" + page + "&name="
      + name + "&clazzId=" + clazzId;
}
function nextPage(page, pages) {
  var name = $('#sname').val();
  var clazzId = $('#sclazzId').val();
  page = (page + 1 > pages) ? pages : (page + 1);
  window.location.href = "assistantWork.action?page=" + page + "&name="
      + name + "&clazzId=" + clazzId;
}

function detail(id, type) {
  $.ajax({
    url : 'selectOneWork.action?id=' + id,
    async : false, // 同步請求
    error : function() {
      alert("失敗");
    },
    success : function(data) {
      data = eval("(" + data + ")");
      $('#workid').val(data.id);
      $('#cname').val(data.name);
      $('#sclazzIdM').val(data.clazzId);
      $('#cdescription').val(data.description);
    },
  }, 'json');
  if(type==1){
    //查看 需要改成不可編輯
    setDisabled();
  }else if(type==2){
    cleanDisabled();
  }
}

function add(){
  cleanDisabled();
}
function setDisabled(){
  $('#cname').attr("disabled",true);
  $('#sclazzIdM').attr("disabled",true);
  $('#cdescription').attr("disabled",true);
  $('#submitWork').attr("disabled",true);
}

function cleanDisabled(){
  $('#cname').attr("disabled",false);
  $('#sclazzIdM').attr("disabled",false);
  $('#cdescription').attr("disabled",false);
  $('#submitWork').attr("disabled",false);
}

在jsp頁面中我們只需要在字段中嵌入這兩div就可以實現視覺上的升序或降序,真正實現排序的是字段上面的那個點擊事件,事件的執行方法在上面的腳本中都已經寫好了,就這麼簡單,你就實現了表格數據的本地排序,大大的減少了與服務器之間的訪問次數。

1.另外在說一句就是在我們的jsp中我們有的時候並不是很需要數據庫數據的格式,這個時候我們需要將數據的格式進行轉化,轉化的方式有很多種,我們可以將數據在後台的時候進行格式處理,但是這樣做的話在效率上並不是很快,我們在jsp中就有這樣的標簽

這樣我們就實現了日期的格式化處理,值得注意的是這裡的fmt只能用我頁面上的布局,不能用工具上的格式化處理,處理過就會影響我們上面的本地排序,所以只能用我的格式

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved