[转帖][强烈推荐]网页表格(Table/GridView)标题栏和列冻结(跨浏览器兼容)

GridView的标题栏、列冻结效果(跨浏览器版)

本文来源:http://blog.darkthread.net/blogs/darkthreadtw/archive/2009/02/18/supertable-plugin-for-jquery.aspx

稍早发表了GridView 的标题列冻结效果,足以满足工作上的需求,不过存在两个缺点:只支援FF及IE6/7、只能冻结列不能冻结栏(行)...

不甘心事情只做一半,又挖了一下,惊喜地发现另一个版本: Super Tables,可以支援 Firefox 2+, Internet Explorer 5.5+, Safari 3+, Opera 9+以及Chrome,而且也支援直栏的冻结效果,在功能上大胜ScrollableTable,二话不说,通通包起来。

SuperTable的原理与ScrollableTable不同,它需要额外的CSS以及在Table外包一层<div>,可视范围 大小由<div> Style决定,设定时参数也较多(如:fixedCols, headerRows...),所以我写了一个jQuery Plugin(jquery.superTable.js)把它包起来。有了Plugin的加持,只要一个toSuperTable(options)就 可立即升级成有冻结效果的GridView了。

排版显示纯文字复制文字
/
// Super Tables Plugin for jQuery - MIT Style License
// Copyright (c) 2009 Jeffrey Lee --- blog.darkthread.net
//
// A wrapper for Matt Murphy's Super Tables http://www.matts411.com/post/super_tables/
//
// Contributors:
//
/
// TO CALL: 
// $("...").toSuperTable(options)
//
// OPTIONS: (order does not matter )
// cssSkin : string ( eg. "sDefault", "sSky", "sOrange", "sDark" )
// headerRows : integer ( default is 1 )
// fixedCols : integer ( default is 0 )
// colWidths : integer array ( use -1 for auto sizing )
// onStart : function ( any this.variableNameHere variables you create here can be used later ( eg. onFinish function ) )
// onFinish : function ( all this.variableNameHere variables created in this script can be used in this function )
// margin, padding, width, height, overflow...: Styles for "fakeContainer"
//
// Example:
// $("#GridView1").toSuperTable(
// { width: "640px", height: "480px", fixedCols: 2,
// onFinish: function() { alert('Done!'); } })
 
(function($) {
$.fn.extend(
{
toSuperTable: function(options) {
var setting = $.extend(
{
width: "640px", height: "320px",
margin: "10px", padding: "0px",
overflow: "hidden", colWidths: undefined,
fixedCols: 0, headerRows: 1,
onStart: function() { },
onFinish: function() { },
cssSkin: "sSky"
}, options);
return this.each(function() {
var q = $(this);
var id = q.attr("id");
q.removeAttr("style").wrap("<div id='" + id + "_box'></div>");
 
var nonCssProps = ["fixedCols", "headerRows", "onStart", "onFinish", "cssSkin", "colWidths"];
var container = $("#" + id + "_box");
 
for (var p in setting) {
if ($.inArray(p, nonCssProps) == -1) {
container.css(p, setting[p]);
delete setting[p];
}
}
 
var mySt = new superTable(id, setting);
 
});
}
});
})(jQuery);

完整的Demo程式如下:

排版显示纯文字复制文字
<%@ Page Language="C#" %>
<%@ Import Namespace="System.Data" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
protected void Page_Load(object sender, EventArgs e)
{
DataTable t = new DataTable();
t.Columns.Add("序号", typeof(int));
t.Columns.Add("料号", typeof(string));
t.Columns.Add("单价", typeof(decimal));
for (int i = 1; i <= 10; i++)
t.Columns.Add("库存" + i, typeof(int));
Random rnd = new Random();
for (int i = 0; i < 80; i++)
{
DataRow row = t.NewRow();
row["序号"] = i + 1;
row["料号"] = Guid.NewGuid().ToString().Substring(0, 13).ToUpper();
row["单价"] = rnd.NextDouble() * 100;
for (int j = 1; j <= 10; j++)
row["库存" + j] = rnd.Next(10000);
t.Rows.Add(row);
}
GridView1.AutoGenerateColumns = false;
foreach (DataColumn c in t.Columns)
{
BoundField bf = new BoundField();
bf.DataField = c.ColumnName;
bf.HeaderText = c.ColumnName;
if (c.DataType == typeof(decimal))
bf.DataFormatString = "{0:#,0.00}";
else if (c.DataType == typeof(int))
bf.DataFormatString = "{0:#,0}";
bf.ItemStyle.HorizontalAlign =
(!string.IsNullOrEmpty(bf.DataFormatString)) ?
HorizontalAlign.Right : HorizontalAlign.Center;
 
GridView1.Columns.Add(bf);
}
GridView1.DataSource = t;
GridView1.DataBind();
}
</script>
 
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<style type="text/css">
.altRow { background-color: #ddddff; }
</style>
<link href="superTables.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="jquery-1.3.1.js"></script>
<script type="text/javascript" src="superTables.js"></script>
<script type="text/javascript" src="jquery.superTable.js"></script>
<script type="text/javascript">
$(function() {
$("#GridView1").toSuperTable({ width: "640px", height: "480px", fixedCols: 2 })
.find("tr:even").addClass("altRow");
});
</script>
</head>
<body>
<form id="form1" runat="server">
<asp:GridView ID="GridView1" runat="server" Font-Size="9pt" EnableViewState="false">
</asp:GridView>
</form>
</body>
</html>

我放了一个线上Demo在http://www.darkthread.net/MiniAjaxLab/ScrollTable ,或者你也可以下载程 式包回去玩。

转载于:https://www.cnblogs.com/aaa6818162/archive/2012/01/12/2320795.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/377834.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

psu是什么电脑配件_PSU的完整形式是什么?

psu是什么电脑配件PSU&#xff1a;电源部门/公共部门事业 (PSU: Power Supply Unit / Public Sector Undertaking) 1)PSU&#xff1a;电源设备 (1) PSU: Power Supply Unit) PSU is an abbreviation of the "Power Supply Unit". PSU是“电源设备”的缩写 。 It is a…

【C++grammar】断言与表达式常量

目录1、常量表达式和constexpr关键字2、断言与C11的静态断言1.1. assert : C语言的宏(Macro)&#xff0c;运行时检测。1.2. assert()依赖于NDEBUG 宏1.3. assert 帮助调试解决逻辑bug &#xff08;部分替代“断点/单步调试”&#xff09;2.1static_assert (C11的静态断言 )2.2.…

一、Arduino UNO R3将数据上传至云平台

一、准备工作 ①ESP12E Shield ②Arduino UNO R3开发板 ③把ESP12E Shield安装到Arduino UNO R3开发板上 ④登录物联网平台注册个账号&#xff0c;到时候需要使用。 ⑤记录下来你的Uid和key到时候会用到 ⑥创建个设备&#xff0c;用于测试 ⑦beyondyanyu为设备名&…

leetcode 93. 复原IP地址 思考分析

题目 给定一个只包含数字的字符串&#xff0c;复原它并返回所有可能的 IP 地址格式。 有效的 IP 地址 正好由四个整数&#xff08;每个整数位于 0 到 255之间组成&#xff0c;且不能含有前导 0&#xff09;&#xff0c;整数之间用 ‘.’ 分隔。 例如&#xff1a;“0.1.2.201” …

二、通过云平台反向控制Arduino UNO R3

该篇博文是在第一篇博文(一、Arduino UNO R3将数据上传至云平台)的基础上进行的 一、云平台发送指令反向控制Arduino UNO R3 ESP12E Shield开关都推到OFF&#xff08;要不然下载会报错&#xff09;&#xff0c;往Arduino UNO R3开发板上下载下面的代码 这段代码进行测试要点&…

【C++grammar】代理构造、不可变对象、静态成员

目录1、Delegation Constructor&#xff08;代理构造&#xff09;1. What is delegating constructor? (什么是代理构造/委托构造)2. Avoiding recursive calls of target constructors (避免递归调用目标ctor)3. 委托构造的好处2、不可变对象和类1、如何让类成为“不可变类”…

RFID模块+WIFI模块+振动传感器+有源蜂鸣器+舵机+Arduino UNO R3所构成的门禁系统模块

该系统模块主要由RFID模块WIFI模块振动传感器有源蜂鸣器舵机Arduino UNO R3组成的门禁系统模块。这里使用舵机充当门锁&#xff0c;用户可以刷卡开门&#xff0c;也可以通过APP控制舵机状态达到开门的效果。若有不法分子想要强行进入室内&#xff0c;对门进行撞击或者人为的破坏…

ESP12E Shield+Arduino UNO R3开发板+DHT11温湿度模块+双色LED灯+有源蜂鸣器+光敏电阻模块+I2CLCD1602液晶显示器所构成的室内检测系统

室内检测系统由ESP12E ShieldArduino UNO R3开发板DHT11温湿度模块双色LED灯有源蜂鸣器光敏电阻模块I2CLCD1602液晶显示器所构成。DHT11温湿度模块获取室内温湿度数据通过I2CLCD1602液晶显示器进行显示&#xff0c;另一方面通过ESP12E Shield将数据上传至云平台。光敏电阻进行捕…

leetcode 202. 快乐数 思考分析(哈希集合与双指针解)

1、题目 编写一个算法来判断一个数 n 是不是快乐数。 「快乐数」定义为&#xff1a;对于一个正整数&#xff0c;每一次将该数替换为它每个位置上的数字的平方和&#xff0c;然后重复这个过程直到这个数变为 1&#xff0c;也可能是 无限循环 但始终变不到 1。如果 可以变为 1&am…

五、线性回归和多项式回归实现

官网API 一、线性回归 针对的是损失函数loss faction Ⅰ、Lasso Regression 采用L1正则&#xff0c;会使得w值整体偏小&#xff1b;w会变小从而达到降维的目的 import numpy as np from sklearn.linear_model import Lasso from sklearn.linear_model import SGDRegresso…

深发展银行编码器(解剖)

电池拆下来&#xff0c;再装上&#xff0c;还能继续用下&#xff0c;不会被重置 转载于:https://www.cnblogs.com/ahuo/archive/2012/01/25/2329485.html

leetcode 1. 两数之和 思考分析

1、题目 给定一个整数数组 nums 和一个目标值 target&#xff0c;请你在该数组中找出和为目标值的那 两个 整数&#xff0c;并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。但是&#xff0c;数组中同一个元素不能使用两遍。 2、思考分析 双for循环的时间复杂度…

六、逻辑回归

一、何为逻辑回归 逻辑回归可以简单理解为是基于多元线性回归的一种缩放。 多元线性回归y的取值范围在(-∞&#xff0c;∞)&#xff0c;数据集中的x是准确的一个数值。 用这样的一个数据集代入线性回归算法当中会得到一个模型。 这个模型所具备的功能就是当有人给这个模型一个…

leetcode 383. 赎金信 思考分析

题目 给定一个赎金信 (ransom) 字符串和一个杂志(magazine)字符串&#xff0c;判断第一个字符串 ransom 能不能由第二个字符串 magazines 里面的字符构成。如果可以构成&#xff0c;返回 true &#xff1b;否则返回 false。 (题目说明&#xff1a;为了不暴露赎金信字迹&#x…

Numpy(科学计算库)---讲解

本内容来自《跟着迪哥学Python数据分析与机器学习实战》&#xff0c;该篇博客将其内容进行了整理&#xff0c;加上了自己的理解&#xff0c;所做小笔记。若有侵权&#xff0c;联系立删。 迪哥说以下的许多函数方法都不用死记硬背&#xff0c;多查API多看文档&#xff0c;确实&a…

仿安居客好租网房产源码

网站设计简约&#xff0c;大方&#xff0c;清爽开发技术&#xff1a;ASP.NET3.5,SQL2005,VS2008功能简介1、小区&#xff0c;二手房&#xff0c;租房小区发布&#xff0c;编辑&#xff0c;修改功能&#xff0c;图片批量上传2、支持积分&#xff0c;发布房源、发布论坛帖子可获得…

LeetCode 454. 四数相加 II 思考分析

题目 给定四个包含整数的数组列表 A , B , C , D ,计算有多少个元组 (i, j, k, l) &#xff0c;使得 A[i] B[j] C[k] D[l] 0。 为了使问题简单化&#xff0c;所有的 A, B, C, D 具有相同的长度 N&#xff0c;且 0 ≤ N ≤ 500 。所有整数的范围在 -228 到 228 - 1 之间&am…

【转】Spark源码分析之-scheduler模块

原文地址&#xff1a;http://jerryshao.me/architecture/2013/04/21/Spark%E6%BA%90%E7%A0%81%E5%88%86%E6%9E%90%E4%B9%8B-scheduler%E6%A8%A1%E5%9D%97/ Background Spark在资源管理和调度方式上采用了类似于Hadoop YARN的方式&#xff0c;最上层是资源调度器&#xff0c;它负…

【C++grammar】析构、友元、拷贝构造函数、深浅拷贝

目录1、Destructor&#xff08;析构函数&#xff09;在堆和栈(函数作用域与内嵌作用域)上分别创建Employee对象&#xff0c;观察析构函数的行为2、Friend&#xff08;友元&#xff09;1、为何需要友元2、友元函数和友元类3、关于友元的一些问题3、Copy Constructor&#xff08;…

Android PreferenceActivity 使用

我想大家对于android的系统配置界面应该不会陌生吧&#xff0c;即便陌生&#xff0c;那么下面的界面应该似曾相识吧&#xff0c;假若还是不认识&#xff0c;那么也没有关系&#xff0c;我们这一节主要就是介绍并讲解android 中系统配置界面的使用&#xff0c;相信大家看完本节后…