表格分页

jQuery.fn.JsonToTable = function(json, title, editable, isPaged) {
  var Obj; //存储json数据
  var Title = title; //表格的列名数组
  var Editable = editable; //列是否可编辑数组
  var TableHtml = '<table>'; //表格html代码
  var PAGE_SIZE = 10; //每页显示的行数
  var totalRowNum = 0; //总的行数
  var i;

  if ((typeof(JSON) == "undefined")) Obj = eval("(" + json + ")");
  else Obj = JSON.parse(json);
  TableHtml += '<tr>';
  for ( i = 0; i < Title.length; i++) {
    TableHtml += '<td>' + Title[i] + '</td>';
  }
  TableHtml += '</tr>';

  for (var o in Obj) {
    totalRowNum++;
    TableHtml += '<tr>';
    for ( i = 0; i < Title.length; i++) {
      if (Obj[o][Title[i]] == '') TableHtml += '<td>&nbsp;</td>';
      else TableHtml += '<td>' + Obj[o][Title[i]] + '</td>';
    }
    TableHtml += '</tr>';
  }

  TableHtml += '</table>';
  if (isPaged) { //如果分页
    if (totalRowNum > PAGE_SIZE) {
      var pageTotal = parseInt(totalRowNum % PAGE_SIZE == 0 ? totalRowNum / PAGE_SIZE : totalRowNum / PAGE_SIZE + 1);
      TableHtml += '<div id="paging"><a class="pre" href="javascript:void(0);">&nbsp;</a>';
      for (i = 0; i < pageTotal; i++) {
        TableHtml += '<a>' + (i + 1) + '</a>';
      }
      TableHtml += '<a class="next" href="javascript:void(0);">&nbsp;</a></div>';
    }
    $(this).html(TableHtml);
    showTable(1, totalRowNum, PAGE_SIZE); //默认显示第一页
  }else
  {
    $(this).html(TableHtml);
  }
 

  $(this).find("tr:even:not(:first)").addClass('even');
  $(this).find("tr:odd").addClass('odd');
  $(this).find("tr:first").addClass('title');

  $(this).find("#paging a").click(function() {
    var curPage;
    $("#paging a").each(function() {
      if ($(this).hasClass("current")) {
        curPage = $(this).text();
        $(this).removeClass("current");
      }
    });

    if ($(this).hasClass("pre")) {
      if (curPage == 1) curPage = 1;
      else curPage = curPage - 1;
    } else if ($(this).hasClass("next")) {
      if (curPage == pageTotal) curPage = pageTotal;
      else curPage = parseInt(curPage) + 1;
    } else {
      curPage = $(this).text();
    }

    showTable(curPage, totalRowNum, PAGE_SIZE);

  });

  $(this).find("td").each(function(index) {
    if (index < Title.length) return;
    $(this).click(function() {
      if (Editable[index % Title.length] == 0) return;
      CreateEdit($(this), $(this).html());
    });
  });
}

jQuery.fn.FixTableHeader = function(lengths) {
  // var top = $('.content table tr:eq(0)').offset().top;
  var loaded = true;
  var tableheader = $(this).find('table tr:eq(0)');
  var top = tableheader.offset().top;
  $(window).scroll(function() {
    var scrolla = $(window).scrollTop();
    var cha = parseInt(top) - parseInt(scrolla);
    if (loaded && cha <= 0) {
      var tmp = '';
      var i = 0;

      tableheader.find('td').each(function() {
        tmp = lengths[i] + 'px';
        $(this).css({
          'width': tmp
        });
        i++;
      });
      tableheader.addClass('fixtitle');
      loaded = false;
    }
    if (!loaded && cha > 0) {
      tableheader.removeClass('fixtitle');
      loaded = true;
    }
  });
}

function showTable(curPage, total, pageSize) {
  $("table tr").each(function(index) {
    if ((index <= curPage * pageSize) && (index > (curPage - 1) * pageSize)) $(this).removeClass("displaynone");
    else $(this).addClass("displaynone");
  })
  $("table tr:first").removeClass("displaynone");

  $("#paging a").each(function() {
    if ($(this).text() == curPage) {
      $(this).addClass("current");
    }
  });
}

function CreateEdit(element, value) {
  //检查编辑状态,如果已经是编辑状态,跳过
  var editState = element.attr('EditState');

  if (editState != 'true') {
    //创建文本框
    var textBox = document.createElement('INPUT');
    textBox.type = 'text';
    textBox.className = 'EditCell_TextBox';

    //设置文本框当前值
    if (!value || value == '&nbsp;') {
      value = '';
    }
    textBox.value = value;

    //设置文本框的失去焦点事件
    textBox.onblur = function() {
      CancelEditCell(this.parentNode, this.value);
      element.attr('EditState', 'false');
    }
    //向当前单元格添加文本框
    ClearChild(element);
    element.append(textBox);
    textBox.focus();
    textBox.select();

    //改变状态变量
    element.attr('EditState', 'true');
    //element.parentNode.parentNode.setAttribute('CurrentRow', element.parentNode.rowIndex);
  }
}

//取消单元格编辑状态

function CancelEditCell(element, value, text) {
  //element.setAttribute('Value', value);
  //var tempvalue=parseFloat(value);

  //if((tempvalue<=100&&tempvalue>=0)||value=='')
  //{
  if (value == '') value = '&nbsp;';
  if (text) {
    element.innerHTML = text;
  } else {
    element.innerHTML = value;
  }
  //}
  //else
  //{
  //    alert('你输入的格式有误!');
  //    element.children[0].focus();
  //    element.children[0].select();
  //    return;
  //}
  element.setAttribute('EditState', 'false');
}

//清空指定对象的所有字节点

function ClearChild(element) {
  element.html('');
}

转载于:https://www.cnblogs.com/hqu-ye/archive/2013/04/09/3010975.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于计算机专业的学生而言,参加各类比赛能够带来多方面的益处,具体包括但不限于以下几点: 技能提升: 参与比赛促使学生深入学习和掌握计算机领域的专业知识与技能,如编程语言、算法设计、软件工程、网络安全等。 比赛通常涉及实际问题的解决,有助于将理论知识应用于实践中,增强问题解决能力。 实践经验: 大多数比赛都要求参赛者设计并实现解决方案,这提供了宝贵的动手操作机会,有助于积累项目经验。 实践经验对于计算机专业的学生尤为重要,因为雇主往往更青睐有实际项目背景的候选人。 团队合作: 许多比赛鼓励团队协作,这有助于培养学生的团队精神、沟通技巧和领导能力。 团队合作还能促进学生之间的知识共享和思维碰撞,有助于形成更全面的解决方案。 职业发展: 获奖经历可以显著增强简历的吸引力,为求职或继续深造提供有力支持。 某些比赛可能直接与企业合作,提供实习、工作机会或奖学金,为学生的职业生涯打开更多门路。 网络拓展: 比赛是结识同行业人才的好机会,可以帮助学生建立行业联系,这对于未来的职业发展非常重要。 奖金与荣誉: 许多比赛提供奖金或奖品,这不仅能给予学生经济上的奖励,还能增强其成就感和自信心。 荣誉证书或奖状可以证明学生的成就,对个人品牌建设有积极作用。 创新与研究: 参加比赛可以激发学生的创新思维,推动科研项目的开展,有时甚至能促成学术论文的发表。 个人成长: 在准备和参加比赛的过程中,学生将面临压力与挑战,这有助于培养良好的心理素质和抗压能力。 自我挑战和克服困难的经历对个人成长有着深远的影响。 综上所述,参加计算机领域的比赛对于学生来说是一个全面发展的平台,不仅可以提升专业技能,还能增强团队协作、沟通、解决问题的能力,并为未来的职业生涯奠定坚实的基础。
在Flask中实现表格分页通常需要以下步骤: 1. 安装所需的依赖:在你的Flask项目中,你可以使用Flask插件或者其他第三方库来实现表格分页。一些常用的插件包括Flask-Paginate和Flask-Bootstrap。 2. 创建表格:你需要创建一个用于显示数据的表格。你可以使用Flask插件或者手动创建HTML表格模板。确保你的表格支持分页功能。 3. 获取数据:从数据库或其他数据源中获取需要展示的数据。你可以使用SQLAlchemy等库来操作数据库。 4. 分页处理:使用Flask插件或者编写自定义逻辑来处理分页。你需要将数据切片成每一页的大小,并根据用户的请求来选择要显示的页数。 5. 在模板中渲染表格:将分页后的数据传递给模板,并在模板中渲染表格。你可以使用模板引擎,如Jinja2,来动态生成HTML。 6. 实现前端交互:为了实现用户在前端切换页码的功能,你可以使用JavaScript和AJAX来发送请求并更新表格内容,而无需刷新整个页面。 下面是一个简单的示例代码: ```python from flask import Flask, render_template from flask_paginate import Pagination, get_page_args app = Flask(__name__) @app.route('/', methods=['GET']) def index(): # 模拟从数据库获取数据 data = range(100) # 分页处理 page, per_page, offset = get_page_args() per_page = 10 offset = (page - 1) * per_page pagination_data = data[offset: offset + per_page] # 创建分页对象 pagination = Pagination(page=page, total=len(data), per_page=per_page, css_framework='bootstrap4') return render_template('index.html', data=pagination_data, pagination=pagination) if __name__ == '__main__': app.run() ``` 在上面的代码中,我们使用`Flask-Paginate`插件来处理分页逻辑。在模板`index.html`中,你可以使用`pagination`对象来渲染分页导航栏,并使用`data`来渲染表格内容。 请注意,这只是一个简单的示例,你可能需要根据你的具体需求进行适当的调整和扩展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值