- 浏览: 33082 次
- 性别:
- 来自: 上海
文章分类
最新评论
不甘心事情只做一半,又挖了一下,驚喜地發現另一個版本: 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);/////////////////////////////////////////////////////////////////////////////////////////
// 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><%@ 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>
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);/////////////////////////////////////////////////////////////////////////////////////////
// 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><%@ 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>
相关推荐
GRIDVIEW实现EXCEL列冻结功能, 简单,实用。易扩装.易理解...
gridview固定冻结列与表头gridview固定冻结列与表头
gridview冻结表头和列 gridview冻结表头和列 gridview冻结表头和列 gridview冻结表头和列 gridview冻结表头和列 gridview冻结表头和列
这个与asp.net中GridView相关的一个实例,实现GridView冻结表头和列,挺好用的。
主要介绍了asp.net实现固定GridView标题栏的方法,即冻结列功能,涉及GridView结合前端js操作数据显示的相关技巧,需要的朋友可以参考下
GridView 冻结列和行 绝对好用 ,想冻结哪个列和行都可以
之前上传一个资源css冻结表头冻结第一列,有评论说有些浏览器不兼容,针对这一问题用jquery来解决冻结行和列的兼容问题。 Gridview 固定行与列,jquery实现 兼容IE6-IE10,谷歌,火狐等多种常用版本浏览器。 asp.net...
用c#连接oracle 数据库,gridview显示oracle内容,数据量大时,可以实现gridview 某列始终显示
Asp.net GridView标题列可拖动调整宽度效果实现,实现效果类似于Winform中的ListView控件拖动标题,必变列宽,但界面与listview控件不一样,需要自己改变gridivew样式,具体是根据js插件实现;
关于ASP.NET,实现Gridview控件左右移动时,前几列固定不动例子。简单使用,新手易上手。代码有注释
纯粹的css设置gridview冻结表头和列,包括列、行合并,个网上找的那些方法都不行,自己实现了好久终于实现了,和大家分享一下
主要介绍了C#中GridView动态添加列的实现方法,涉及C#中GridView的相关使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下
GridView动态添加列的方法及代码, 生成动态列,,模板列没全部完成
android仿新闻标题栏【水平GridView与VIewpager结合】,供学习参考。
固定GridView首行或列 asp.net 固定行,固定列
asp.net gridview 固定标题和列! 值得下载看看!资源免费,大家分享!!
GridView动态添加模板列,有设置,和代码,是学习GridView的好东西。
GridView表格抬头每列增加三角图标,点击弹窗可复选该列值进行筛选。
一个多功能的GridView,在asp.net原有的GridView上增加了11个新功能,包括分组,冻结窗口,鼠标事件,复合排序,联动复选框,响应行的单击事件和双击事件,行右键菜单,自定义分页样式,合并指定列的相邻且内容相同的单元格等...