阅读更多

33顶
8踩

Web前端

原创新闻 基于jQuery的DataGrid发布

2009-11-24 11:50 by 见习记者 stworthy 评论(30) 有37443人浏览

DataGrid jQuery Plugin项目第一阶段的编写任务完成一段时间了,现在发布出来,给大家参考。

jQuery世界中可用的表格控件可谓不多,但愿这个插件能够增加一道风景。

 

项目地址:http://www.etmvc.cn/project/show/67

 

33
8
评论 共 30 条 请登录后发表评论
30 楼 chenxianbin89 2010-05-13 09:39
什么货色 代码写的很好吗? 漏洞百出 扩展性不好 还加密 真是 装什么B
29 楼 a3mao 2009-11-26 07:51
hunterkevin 写道
vb2005xu 写道
xplazy 写道
一看就是国产货。
一点开放的心态都没有。

xplazy 写道
一看就是国产货。
一点开放的心态都没有。


这种基本都是看了别人的代码可是又怕被说抄袭,所以就加密了..
还能美其名曰:自主研发...

这种东西我是 直接PASS.... 很龌龊的做法,跟中移动似的

确实如此,感觉跟Flexigrid惊人的相似,除了Hafeyang朋友说的除了能够冻结列,支持列分组,没什么新鲜的东西。
还是Flexigid好,很好用,并且别个是开源了的;我刚在一个项目中采用了,使用过程中针对源码做了部分修改,现在已经可以支持IE6,IE7,IE8,FF,Chrome。



flexigrid我也用过,但网上有人说它的渲染效率不够好,不过我觉得也换可以。现在在试用jqGrid。
28 楼 erikchang 2009-11-25 20:15
做这些表格,用div来做丝毫不差,而且不用那么多代码,为什么总是给这些东西当成神圣的东西,没有多少意义!
27 楼 timeroading 2009-11-25 16:08
没什么新鲜感
26 楼 hunterkevin 2009-11-25 16:03
vb2005xu 写道
xplazy 写道
一看就是国产货。
一点开放的心态都没有。

xplazy 写道
一看就是国产货。
一点开放的心态都没有。


这种基本都是看了别人的代码可是又怕被说抄袭,所以就加密了..
还能美其名曰:自主研发...

这种东西我是 直接PASS.... 很龌龊的做法,跟中移动似的

确实如此,感觉跟Flexigrid惊人的相似,除了Hafeyang朋友说的除了能够冻结列,支持列分组,没什么新鲜的东西。
还是Flexigid好,很好用,并且别个是开源了的;我刚在一个项目中采用了,使用过程中针对源码做了部分修改,现在已经可以支持IE6,IE7,IE8,FF,Chrome。
25 楼 youjianbo_han_87 2009-11-25 14:14
我晕,这用起来也忒多了。。。。。。。。
24 楼 Zehee 2009-11-25 13:42
(function ($) {
	function setSize(target) {
		var grid=$.data(target,'datagrid').grid;
		var opts=$.data(target,'datagrid').options;
		if(opts.rownumbers||(opts.frozenColumns&&opts.frozenColumns.length>0)) {
			$('.datagrid-body .datagrid-cell,.datagrid-body .datagrid-cell-rownumber',grid).addClass('datagrid-cell-height')
		}
		var gridWidth=opts.width;
		if(gridWidth=='auto') {
			if($.boxModel==true) {
				gridWidth=grid.width();
			}else {
				gridWidth=grid.outerWidth();
			}
		}grid.width(gridWidth);
		var innerWidth=gridWidth;
		if($.boxModel==false) {
			innerWidth=gridWidth-grid.outerHeight()+grid.height();
		}
		$('.datagrid-wrap',grid).width(innerWidth);
		$('.datagrid-view',grid).width(innerWidth);
		$('.datagrid-view1',grid).width($('.datagrid-view1 table',grid).width());
		$('.datagrid-view2',grid).width(innerWidth-$('.datagrid-view1',grid).outerWidth());
		$('.datagrid-view1 .datagrid-header',grid).width($('.datagrid-view1',grid).width());
		$('.datagrid-view1 .datagrid-body',grid).width($('.datagrid-view1',grid).width());
		$('.datagrid-view2 .datagrid-header',grid).width($('.datagrid-view2',grid).width());
		$('.datagrid-view2 .datagrid-body',grid).width($('.datagrid-view2',grid).width());
		var hh;
		if($.boxModel==true) {
			hh=Math.max($('.datagrid-view1 .datagrid-header',grid).height(),$('.datagrid-view2 .datagrid-header',grid).height())
		}else {
			hh=Math.max($('.datagrid-view1 .datagrid-header',grid).outerHeight(),$('.datagrid-view2 .datagrid-header',grid).outerHeight())
		}
		$('.datagrid-view1 .datagrid-header table',grid).height(hh);
		$('.datagrid-view2 .datagrid-header table',grid).height(hh);
		$('.datagrid-view1 .datagrid-header',grid).height(hh);
		$('.datagrid-view2 .datagrid-header',grid).height(hh);
		if(opts.height=='auto') {
			$('.datagrid-body',grid).height($('.datagrid-view2 .datagrid-body table',grid).height())
		}else {
			$('.datagrid-body',grid).height(opts.height-(grid.outerHeight()-grid.height())-$('.datagrid-header',grid).outerHeight()-$('.datagrid-title',grid).outerHeight()-$('.datagrid-toolbar',grid).outerHeight()-$('.datagrid-pager',grid).outerHeight())
		}
		$('.datagrid-view',grid).height($('.datagrid-view2',grid).height());
		$('.datagrid-view1',grid).height($('.datagrid-view2',grid).height());
		$('.datagrid-view2',grid).css('left',$('.datagrid-view1',grid).outerWidth());
	}
	function wrapGrid(target,rownumbers) {
		var grid=$(target).wrap('<div class="datagrid"></div>').parent();
		grid.append('<div class="datagrid-wrap">'+'<div class="datagrid-view">'+'<div class="datagrid-view1">'+'<div class="datagrid-header">'+'<div class="datagrid-header-inner"></div>'+'</div>'+'<div class="datagrid-body">'+'<div class="datagrid-body-inner">'+'<table border="0" cellspacing="0" cellpadding="0"></table>'+'</div>'+'</div>'+'</div>'+'<div class="datagrid-view2">'+'<div class="datagrid-header">'+'<div class="datagrid-header-inner"></div>'+'</div>'+'<div class="datagrid-body"></div>'+'</div>'+'<div class="datagrid-resize-proxy"></div>'+'</div>'+'</div>');
		var frozenColumns=getColumns($('thead[frozen=true]',target));
		$('thead[frozen=true]',target).remove();
		var columns=getColumns($('thead',target));
		$('thead',target).remove();
		$(target).attr({cellspacing:0,cellpadding:0,border:0}).removeAttr('width').removeAttr('height').appendTo($('.datagrid-view2 .datagrid-body',grid));
		function getColumns(thead) {
			var columns=[];
			$('tr',thead).each(function () {
				var cols=[];
				$('th',this).each(function () {
					var th=$(this);
					var col={title:th.html(),align:th.attr('align')||'left',sortable:th.attr('sortable')=='true'||false,checkbox:th.attr('checkbox')=='true'||false};
					if(th.attr('field')) {
						col.field=th.attr('field');
					}
					if(th.attr('formatter')) {
						col.formatter=eval(th.attr('formatter'))
					}if(th.attr('rowspan'))col.rowspan=parseInt(th.attr('rowspan'));
					if(th.attr('colspan'))col.colspan=parseInt(th.attr('colspan'));
					if(th.attr('width'))col.width=parseInt(th.attr('width'));
					cols.push(col)
				});
				columns.push(cols)
			});
			return columns;
		}
		var fields=getColumnFields(columns);
		$('.datagrid-view2 .datagrid-body tr',grid).each(function () {
			for(var i=0;i<fields.length;i++) {
				$('td:eq('+i+')',this).addClass('datagrid-column-'+fields[i]).wrapInner('<div class="datagrid-cell"></div>')
			}
		});
		return {grid:grid,frozenColumns:frozenColumns,columns:columns}
	}
	function createColumnHeader(columns) {
		var t=$('<table border="0" cellspacing="0" cellpadding="0"><thead></thead></table>');
		for(var i=0;i<columns.length;i++) {
			var tr=$('<tr></tr>').appendTo($('thead',t));
			var cols=columns[i];
			for(var j=0;j<cols.length;j++) {
				var col=cols[j];
				var attr='';
				if(col.rowspan)attr+='rowspan="'+col.rowspan+'" ';
				if(col.colspan)attr+='colspan="'+col.colspan+'" ';
				var th=$('<th '+attr+'></th>').appendTo(tr);
				if(col.checkbox) {
					th.attr('field',col.field);
					$('<div class="datagrid-header-check"></div>').html('<input type="checkbox"/>').appendTo(th)
				}else if(col.field) {
					th.append('<div class="datagrid-cell"><span></span><span class="datagrid-sort-icon"></span></div>');
					th.attr('field',col.field);
					$('.datagrid-cell',th).width(col.width);
					$('span',th).html(col.title);
					$('span.datagrid-sort-icon',th).html('&nbsp;');
				}else {
					th.append('<div class="datagrid-cell-group"></div>');
					$('.datagrid-cell-group',th).html(col.title);
				}
			}
		}
		return t;
	}
	function setProperties(target) {
		var grid=$.data(target,'datagrid').grid;
		var opts=$.data(target,'datagrid').options;
		var data=$.data(target,'datagrid').data;
		if(opts.striped) {
			$('.datagrid-view1 .datagrid-body tr:odd',grid).addClass('datagrid-row-alt');
			$('.datagrid-view2 .datagrid-body tr:odd',grid).addClass('datagrid-row-alt');
		}
		if(opts.nowrap==false) {
			$('.datagrid-body .datagrid-cell',grid).css('white-space','normal');
		}
		$('.datagrid-header th:has(.datagrid-cell)',grid).hover(function () {
			$(this).addClass('datagrid-header-over')
		},function () {
			$(this).removeClass('datagrid-header-over');
		});
		$('.datagrid-body tr',grid).mouseover(function () {
			var index=$(this).attr('datagrid-row-index');
			$('.datagrid-body tr[datagrid-row-index='+index+']',grid).addClass('datagrid-row-over');
		}).mouseout(function () {
			var index=$(this).attr('datagrid-row-index');
			$('.datagrid-body tr[datagrid-row-index='+index+']',grid).removeClass('datagrid-row-over');
		}).click(function () {
			var index=$(this).attr('datagrid-row-index');
			if($(this).hasClass('datagrid-row-selected')) {
				$('.datagrid-body tr[datagrid-row-index='+index+']',grid).removeClass('datagrid-row-selected');
				$('.datagrid-body tr[datagrid-row-index='+index+'] .datagrid-cell-check input[type=checkbox]',grid).attr('checked',false);
			}else {
				$('.datagrid-body tr[datagrid-row-index='+index+']',grid).addClass('datagrid-row-selected');
				$('.datagrid-body tr[datagrid-row-index='+index+'] .datagrid-cell-check input[type=checkbox]',grid).attr('checked',true);
			}if(opts.onClickRow) {
				opts.onClickRow.call(this,index,data.rows[index])
			}
		}).dblclick(function () {
			var index=$(this).attr('datagrid-row-index');
			if(opts.onDblClickRow) {
				opts.onDblClickRow.call(this,index,data.rows[index]);
			}
		});
		function onHeaderCellClick() {
			var field=$(this).parent().attr('field');
			var opt=getColumnOption(target,field);
			if(!opt.sortable)return ;
			opts.sortName=field;
			opts.sortOrder='asc';
			var c='datagrid-sort-asc';
			if($(this).hasClass('datagrid-sort-asc')) {
				c='datagrid-sort-desc';
				opts.sortOrder='desc';
			}
			$('.datagrid-header .datagrid-cell',grid).removeClass('datagrid-sort-asc');
			$('.datagrid-header .datagrid-cell',grid).removeClass('datagrid-sort-desc');
			$(this).addClass(c);
			if(opts.onSortColumn) {
				opts.onSortColumn.call(this,opts.sortName,opts.sortOrder);
			}
			request(target);
		}
		$('.datagrid-header .datagrid-cell',grid).unbind('.datagrid');
		$('.datagrid-header .datagrid-cell',grid).bind('click.datagrid',onHeaderCellClick);
		$('.datagrid-header .datagrid-header-check input[type=checkbox]',grid).click(function () {
			if($(this).attr('checked')) {
				$('.datagrid-body tr',grid).addClass('datagrid-row-selected');
				$('.datagrid-body .datagrid-cell-check input[type=checkbox]',grid).attr('checked',true)
			}else {
				$('.datagrid-body tr',grid).removeClass('datagrid-row-selected');
				$('.datagrid-body .datagrid-cell-check input[type=checkbox]',grid).attr('checked',false)
			}
		});
		$('.datagrid-header .datagrid-cell',grid).resizable({
			handles:'e',minWidth:50,onStartResize:function (e) {
				$('.datagrid-resize-proxy',grid).css({left:e.pageX-$(grid).offset().left-1});
				$('.datagrid-resize-proxy',grid).css('display','block')
			},onResize:function (e) {
				$('.datagrid-resize-proxy',grid).css({
					left:e.pageX-$(grid).offset().left-1
				});
				return false
			},onStopResize:function (e) {
				fixColumnSize(target,this);
				$('.datagrid-view2 .datagrid-header',grid).scrollLeft($('.datagrid-view2 .datagrid-body',grid).scrollLeft());
				$('.datagrid-resize-proxy',grid).css('display','none')
			}
		});
		$('.datagrid-view1 .datagrid-header .datagrid-cell',grid).resizable({onStopResize:function (e) {
					fixColumnSize(target,this);
					$('.datagrid-view2 .datagrid-header',grid).scrollLeft($('.datagrid-view2 .datagrid-body',grid).scrollLeft());
					$('.datagrid-resize-proxy',grid).css('display','none');
					setSize(target);
				}
		});
		var body1=$('.datagrid-view1 .datagrid-body',grid);
		var body2=$('.datagrid-view2 .datagrid-body',grid);
		var header2=$('.datagrid-view2 .datagrid-header',grid);
		body2.scroll(function () {
			header2.scrollLeft(body2.scrollLeft());
			body1.scrollTop(body2.scrollTop());
		})
	}
	function fixColumnSize(target,cell) {
		var grid=$.data(target,'datagrid').grid;
		var opts=$.data(target,'datagrid').options;
		if(cell) {
			fix(cell);
		}else {
			$('.datagrid-header .datagrid-cell',grid).each(function () {
				fix(this);
			});
		}
		function fix(cell) {
			var headerCell=$(cell);
			var fieldName=headerCell.parent().attr('field');
			$('.datagrid-body td.datagrid-column-'+fieldName+' .datagrid-cell',grid).each(function () {
				var bodyCell=$(this);
				if($.boxModel==true) {
					bodyCell.width(headerCell.outerWidth()-bodyCell.outerWidth()+bodyCell.width())
				}else {
					bodyCell.width(headerCell.outerWidth())
				}
			});
			var col=getColumnOption(target,fieldName);
			col.width=$.boxModel==true?headerCell.width():headerCell.outerWidth();
		}
	}
	function getColumnOption(target,field) {
		var opts=$.data(target,'datagrid').options;
		if(opts.columns) {
			for(var i=0;i<opts.columns.length;i++) {
				var cols=opts.columns[i];
				for(var j=0;j<cols.length;j++) {
					var col=cols[j];
					if(col.field==field) {
						return col;
					}
				}
			}
		}
		if(opts.frozenColumns) {
			for(var i=0;i<opts.frozenColumns.length;i++) {
				var cols=opts.frozenColumns[i];
				for(var j=0;j<cols.length;j++) {
					var col=cols[j];
					if(col.field==field) {
						return col;
					}
				}
			}
		}
		return null;
	}
	function getColumnFields(columns) {
		if(columns.length==0)return [];
		function getFields(ridx,cidx,count) {
			var fields=[];
			while(fields.length<count) {
				var col=columns[ridx][cidx];
				if(col.colspan&&parseInt(col.colspan)>1) {
					var ff=getFields(ridx+1,getSubColIndex(ridx,cidx),parseInt(col.colspan));
					fields=fields.concat(ff);
				}else if(col.field) {
					fields.push(col.field);
				}
				cidx++
			}
			return fields;
		}
		function getSubColIndex(ridx,cidx) {
			var index=0;
			for(var i=0;i<cidx;i++) {
				var colspan=parseInt(columns[ridx][i].colspan||'1');
				if(colspan>1) {
					index+=colspan;
				}
			}
			return index;
		}
		var fields=[];
		for(var i=0;i<columns[0].length;i++) {
			var col=columns[0][i];
			if(col.colspan&&parseInt(col.colspan)>1) {
				var ff=getFields(1,getSubColIndex(0,i),parseInt(col.colspan));
				fields=fields.concat(ff);
			}else if(col.field) {
				fields.push(col.field);
			}
		}return fields;
	}
	function loadData(target,data) {
		var grid=$.data(target,'datagrid').grid;
		var opts=$.data(target,'datagrid').options;
		var rows=data.rows;
		var getWidthDelta=function () {
			if($.boxModel==false)return 0;
			var headerCell=$('.datagrid-header .datagrid-cell:first');
			var headerDelta=headerCell.outerWidth()-headerCell.width();
			var t=$('.datagrid-body table',grid);
			t.append($('<tr><td><div class="datagrid-cell"></div></td></tr>'));
			var bodyCell=$('.datagrid-cell',t);
			var bodyDelta=bodyCell.outerWidth()-bodyCell.width();
			return headerDelta-bodyDelta;
		};
		var widthDelta=getWidthDelta();
		var frozen=opts.rownumbers||(opts.frozenColumns&&opts.frozenColumns.length>0);
		function getTBody(fields,rownumbers) {
			var tbody=['<tbody>'];
			for(var i=0;i<rows.length;i++) {
				var row=rows[i];
				if(i%2&&opts.striped) {
					tbody.push('<tr class="datagrid-row-alt" datagrid-row-index="'+i+'">');
				}else {
					tbody.push('<tr datagrid-row-index="'+i+'">');
				}
				if(rownumbers) {
					var rownumber=i+1;
					if(opts.pagination) {
						rownumber+=(opts.pageNumber-1)*opts.pageSize;
					}
					if(frozen) {
						tbody.push('<td><div class="datagrid-cell-rownumber datagrid-cell-height">'+rownumber+'</div></td>');
					}else {
						tbody.push('<td><div class="datagrid-cell-rownumber">'+rownumber+'</div></td>');
					}
				}
				for(var j=0;j<fields.length;j++) {
					var field=fields[j];
					var col=getColumnOption(target,field);
					if(col) {
						var style='width:'+(col.width+widthDelta)+'px;';
						style+='text-align:'+(col.align||'left');
						tbody.push('<td class="datagrid-column-'+field+'">');
						tbody.push('<div style="'+style+'" ');
						if(col.checkbox) {
							tbody.push('class="datagrid-cell-check ');
						}else {
							tbody.push('class="datagrid-cell ');
						}if(frozen) {
							tbody.push('datagrid-cell-height ');
						}
						tbody.push('">');
						if(col.checkbox) {
							tbody.push('<input type="checkbox"/>');
						}else if(col.formatter) {
							tbody.push(col.formatter(row[field],row));
						}else {
							tbody.push(row[field]);
						}
						tbody.push('</div>');
						tbody.push('</td>')
					}
				}
				tbody.push('</tr>')
			}
			tbody.push('</tbody>');
			return tbody.join('')
		}
		$('.datagrid-body, .datagrid-header',grid).scrollLeft(0);
		var fields=getColumnFields(opts.columns);
		$('.datagrid-view2 .datagrid-body table',grid).html(getTBody(fields));
		if(opts.rownumbers||(opts.frozenColumns&&opts.frozenColumns.length>0)) {
			var frozenFields=getColumnFields(opts.frozenColumns);
			$('.datagrid-view1 .datagrid-body table',grid).html(getTBody(frozenFields,opts.rownumbers));
		}
		$.data(target,'datagrid').data=data;
		$('.datagrid-pager',grid).pagination({total:data.total});
		setSize(target);
		setProperties(target);
	}
	function getSelectedRows(target) {
		var grid=$.data(target,'datagrid').grid;
		var data=$.data(target,'datagrid').data;
		var rows=[];
		$('.datagrid-view2 .datagrid-body tr.datagrid-row-selected',grid).each(function () {
			var index=parseInt($(this).attr('datagrid-row-index'));
			if(data.rows[index]) {
				rows.push(data.rows[index]);
			}
		});
		return rows
	}
	function request(target) {
		var grid=$.data(target,'datagrid').grid;
		var opts=$.data(target,'datagrid').options;
		if(!opts.url)return ;
		var param=$.extend({},opts.queryParams);
		if(opts.pagination) {
			$.extend(param,{page:opts.pageNumber,rows:opts.pageSize});
		}
		if(opts.sortName) {
			$.extend(param,{sort:opts.sortName,order:opts.sortOrder});
		}
		$('.datagrid-pager',grid).pagination({loading:true});
		var wrap=$('.datagrid-wrap',grid);
		$('<div class="datagrid-mask"></div>').css({display:'block',width:wrap.width(),height:wrap.height()}).appendTo(wrap);
		$('<div class="datagrid-mask-msg"></div>').html(opts.loadMsg).appendTo(wrap).css({display:'block',left:(wrap.width()-$('.datagrid-mask-msg',grid).outerWidth())/2,top:(wrap.height()-$('.datagrid-mask-msg',grid).outerHeight())/2});
		$.ajax({
			type:opts.method,
			url:opts.url,
			data:param,
			dataType:'json',
			success:function (data) {
				$('.datagrid-pager',grid).pagination({loading:false});
				$('.datagrid-mask',grid).remove();
				$('.datagrid-mask-msg',grid).remove();
				loadData(target,data);
				if(opts.onLoadSuccess) {
					opts.onLoadSuccess.apply(this,arguments);
				}
			},
			error:function () {
				$('.datagrid-pager',grid).pagination({loading:false});
				$('.datagrid-mask',grid).remove();
				$('.datagrid-mask-msg',grid).remove();
				if(opts.onLoadError) {
					opts.onLoadError.apply(this,arguments);
				}
			}
		})
	}
	$.fn.datagrid=function (options,param) {
		if(typeof options=='string') {
			switch(options) {
				case 'options':
					return $.data(this[0],'datagrid').options;
				case 'resize':
					return this.each(function () {
						setSize(this);
					});
				case 'reload':
					return this.each(function () {
						request(this);
					});
				case 'loadData':
					return this.each(function () {
						loadData(this,param);
					});
				case 'getSelected':
					var rows=getSelectedRows(this[0]);
					return rows.length>0?rows[0]:null;
				case 'getSelections':
					return getSelectedRows(this[0]);
			}
		}
		options=options||{};
		return this.each(function () {
			var state=$.data(this,'datagrid');
			var opts;
			if(state) {
				opts=$.extend(state.options,options);
				state.options=opts;
			}else {
				opts=$.extend({},$.fn.datagrid.defaults,options);
				var wrapResult=wrapGrid(this,opts.rownumbers);
				if(!opts.columns)opts.columns=wrapResult.columns;
				if(!opts.frozenColumns)opts.frozenColumns=wrapResult.frozenColumns;
				$.data(this,'datagrid',{options:opts,grid:wrapResult.grid});
			}
			var target=this;
			var grid=$.data(this,'datagrid').grid;
			if(opts.frozenColumns) {
				var t=createColumnHeader(opts.frozenColumns);
				if(opts.rownumbers) {
					var th=$('<th rowspan="'+opts.frozenColumns.length+'"><div class="datagrid-header-rownumber"></div></th>');
					if($('tr',t).length==0) {
						th.wrap('<tr></tr>').parent().appendTo($('thead',t));
					}else {
						th.prependTo($('tr:first',t));
					}
				}
				$('.datagrid-view1 .datagrid-header-inner',grid).html(t);
			}
			if(opts.columns) {
				var t=createColumnHeader(opts.columns);
				$('.datagrid-view2 .datagrid-header-inner',grid).html(t);
			}
			$('.datagrid-title',grid).remove();
			if(opts.title) {
				var title=$('<div class="datagrid-title"><span class="datagrid-title-text"></span></div>');
				$('.datagrid-title-text',title).html(opts.title);
				title.prependTo(grid);
				if(opts.iconCls) {
					$('.datagrid-title-text',title).addClass('datagrid-title-with-icon');
					$('<div class="datagrid-title-icon"></div>').addClass(opts.iconCls).appendTo(title);
				}
			}
			$('.datagrid-toolbar',grid).remove();
			if(opts.toolbar) {
				var tb=$('<div class="datagrid-toolbar"></div>').prependTo($('.datagrid-wrap',grid));
				for(var i=0;i<opts.toolbar.length;i++) {
					var btn=opts.toolbar[i];
					if(btn=='-') {
						$('<div class="datagrid-btn-separator"></div>').appendTo(tb);
					}else {
						$('<a href="javascript:void(0)"></a>').addClass('l-btn').css('float','left').text(btn.text).attr('icon',btn.iconCls||'').bind('click',eval(btn.handler||function () {})).appendTo(tb).linkbutton({plain:true});
					}
				}
			}
			$('.datagrid-pager',grid).remove();
			if(opts.pagination) {
				var pager=$('<div class="datagrid-pager"></div>').appendTo($('.datagrid-wrap',grid));
				pager.pagination({pageNumber:opts.pageNumber,pageSize:opts.pageSize,pageList:opts.pageList,onSelectPage:function (pageNum,pageSize) {opts.pageNumber=pageNum;opts.pageSize=pageSize;request(target);}});
				opts.pageSize=pager.pagination('options').pageSize;
			}
			if(!state) {
				fixColumnSize(target)
			}
			setSize(target);
			if(opts.url) {
				request(target);
			}
			setProperties(target);
		})
	};
	$.fn.datagrid.defaults={width:'auto',height:'auto',frozenColumns:null,columns:null,striped:false,method:'post',nowrap:true,url:null,loadMsg:'Processing, please wait ...',pagination:false,rownumbers:false,pageNumber:1,pageSize:10,pageList:[10,20,30,40,50],queryParams:{},sortName:null,sortOrder:'asc',onLoadSuccess:function () {},onLoadError:function () {},onClickRow:function (rowIndex,rowData) {},onDblClickRow:function (rowIndex,rowData) {},onSortColumn:function (sort,order) {}}
})(jQuery);
23 楼 vb2005xu 2009-11-25 10:22
xplazy 写道
一看就是国产货。
一点开放的心态都没有。

xplazy 写道
一看就是国产货。
一点开放的心态都没有。


这种基本都是看了别人的代码可是又怕被说抄袭,所以就加密了..
还能美其名曰:自主研发...

这种东西我是 直接PASS.... 很龌龊的做法,跟中移动似的
22 楼 caiceclb 2009-11-25 09:52
不好,不好
21 楼 mreay 2009-11-25 08:27
引用
jQuery世界中可用的表格控件可谓不多

已经很多了.
20 楼 outivh 2009-11-25 08:08
貌似和jqGrid一样的代码,仿佛看到了jqGrid。。。
19 楼 hyanqing1 2009-11-24 22:37
不开源就是不让人用了,只是花瓶,大家看看就可以了
18 楼 a3mao 2009-11-24 22:33
ixu 写道
不知道有没有兄弟在用?给个评价。。。


试用过了,说实话,如果不给js源码的话,很难搞,对于他给出的例子能够跑起来,没有问题,可我自己重新做一个struts2的工程就跑不起来,老是报错:“$("#tt").datagrid is not a function” ,不知道怎么回事。难道他这个js跟struts2有冲突??
17 楼 xplazy 2009-11-24 22:28
一看就是国产货。
一点开放的心态都没有。
16 楼 zhoujg 2009-11-24 22:08
其实可供参考的列表控件还是挺多的,
jQuery - 列表控件推荐
http://www.cnblogs.com/zhoujg/archive/2009/11/19/1605641.html

我希望有一个多对象树的列表控件,不知道你的什么时候能很好的支持?
15 楼 Hafeyang 2009-11-24 21:58
相比flexigrid 。能够冻结列。支持列分组。是优势。列头不能拖放改变顺序。
14 楼 zhuzhsh 2009-11-24 21:45
这也算gpl开源?
13 楼 xzj127 2009-11-24 21:39
完全可以“Copy” 一份     
12 楼 treblesoftware 2009-11-24 21:23
还不错,不过这东西需要这个插件吗?
CSS就可以实现这种效果。
11 楼 a3mao 2009-11-24 20:41
xuanye 写道
可惜不是开源的,遇到问题,难以自己解决啊。。


的确是这样,我就按他给的官网介绍准备实验一个做一个小例子,就没成功,想看看源码怎么回事,发现js代码都是经过加密的。

btw: 其实应该跟flexigrid学习,既然想免费给大家使用,为啥不能开源呢?

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • 基于jQuery的UI框架jQuery EasyUI 1.4发布

    jQuery EasyUI是一个基于jQuery的UI框架,其目标是使开发者不需要编写复杂的JavaScript代码,也不需要对CSS样式有深入的了解,只需了 解一些简单的HTML标签,就能够轻松的开发出功能丰富并且美观的UI界面。...

  • 「版本更新」用户界面框架jQuery EasyUI发布v1.8.1|附下载

    jQuery EasyUI提供了基于当下流行的jQuery core和HTML5的控件,助您打造适合当今网络的应用程序。 【jQuery EasyUI v1.8.1最新版下载】 具体更新内容: 改进: switchbutton:新增'label','labelAlign','label...

  • 基于jQuery 常用WEB控件收集

    Horizontal accordion: jQuery 基于jQuery开发,非常简单的水平方向折叠控件。 Horizontal accordion: jQuery jQuery-Horizontal Accordion 具有XBOX360 blade界面风格的水平方向Accordion。 jQuery-Horizontal...

  • PHP DataGrid 4.4 发布

    PHP DataGrid 4.4 发布 发布者:PHPChina 时间:2012年1月16日 09:40 PHP DataGrid 4.4 发布,该版本增加单元格内的数据条,用于显示可视化图表;用户可通过简单双击即可编辑行;提供一个条件化的...

  • php表格datagrid插件,让datagrid表格

    EasyUI - DataGrid 去右边空白滚动条列在网上查了很长时间没有找到解决方法,干脆自已查看一下代码来解决吧,随是压缩过的,不过也还是好查的,工夫不负有心人,终于解决了,方法如下:一、我们先让表格自适应宽度...

  • jQuery EasyUI的各历史版本和应用

    jQuery团队在2013放出了两个版本。 第一个版本保持1.x的编号,目前1.11.1,其保持了最大数量的浏览器兼容。 第二个版,从2.0.0到现在的2.1.1,为精简代码去除了对IE8以及以下浏览器的支持。 正如之前,将有两个...

  • jquery easyui-datagrid/treegrid 清空数据参考

    在使用easyui的treegrid或datagrid的过程经常会有这样的场景,如:需要按不同的类型加载数据时,如果选择的分类下没有数据应该把上次展示的数据清空,以免引用歧义。下面给出两种方法供初学者参考: 方法一:...

  • jquery常用的插件1000收集

    花N长时间积累的Jquery插件,希望大家喜欢。大家还有什么新的插件,请留言,我们一并收录。 感谢大家的支持。 1.accordion类 基于jQuery开发,非常简单的水平方向折叠控件。 Ho

  • 32款 jQuery UI框架开源软件

    转自: http://www.oschina.net/project/tag/277/jquery-ui?lang=0&os=0&sort=view&p=1 ...DWZ富客户端框架(jQuery RIA framework), 是中国人自己开发的基于jQuery实现的Ajax RIA开源框架. 设计目标

  • JQuery EasyUI+Java实现web管理系统

    当然了,我的web管理系统就做的很简单也很粗糙了,前端使用常见网站模板样式+JQuery EasyUI组件,前后端使用JSON传送数据,后端语言使用Java,与MySQL数据库交互采用DbUtils。 关于自定义样式 这个主要包

  • jquery ui php,推荐10款最热门jQuery UI框架[原创]_jquery

    1.国产jQuery UI框架 (jUI) DWZDWZ富客户端框架(jQuery RIA framework), 是中国人自己开发的基于jQuery实现的Ajax RIA开源框架. 设计目标是简单实用,快速开发,降低ajax开发成本。 欢迎大家提出建议,我们将在下一...

  • jquery 插件

    jquery常用的插件1000收集 花N长时间积累的Jquery插件,希望大家喜欢。...基于jQuery开发,非常简单的水平方向折叠控件。 Horizontal accordion: jQuery 热点图书:www.hotbook.cn jQuery-Horizon...

  • JEECG v3.0.beta发布,基于代码生成器的智能开发平台

    JEECG(J2EE Code Generation) 是一款基于代码生成器的智能开发平台,采用代码生成+手工MERGE半智能开发模式, 可以帮助解决Java项目60%的重复工作,让开发更多关注业务逻辑。既能快速提高开发效率,帮助公司节省...

  • jquery常用的插件

    jquery常用的插件1000收集 花N长时间积累的Jquery插件,希望大家喜欢。...基于jQuery开发,非常简单的水平方向折叠控件。 Horizontal accordion: jQuery 热点图书:www.hotbook.cn jQuery-Horizontal Accordi...

  • 实现easyui datagrid在没有数据时显示相关提示内容

    本示例实现easyui datagrid加载/查询数据时,如果没有相关记录,则在datagrid中显示没有相关记录的提示信息,效果如下图所示 本实例要实现如下图所示的效果: 本示例easyui版本为1.3.4,如果运行后没有效果,自己...

  • php jq表格,jQuery 表格工具集_jquery

    jQuery 表格插件Flexigrid – Web 2.0 Javscript Grid for jQuery - 可变列宽,自动适应表头宽度,可通过 Ajax 连接 XML 数据源,类似 Ext Grid,但基于 jQuery 因此更轻量小巧。Chromatable JQuery Plugin - 固定...

  • 用户界面框架jQuery EasyUI发布v1.4.5|附下载

    jQuery EasyUI提供了基于当下流行的jQuery core和HTML5的控件,助您打造适合当今网络的应用程序。 免费下载: jQuery EasyUI v1.4.5 具体更新内容如下: 改进: window: 可自定义显示样式 window:...

  • YbSoftwareFactory 代码生成插件【八】:基于JQuery EasyUI、Web Api的 ASP.NET MVC 代码生成插件...

    “YbRapidSolution for MVC”是 YbSoftwareFactory 最新的代码生成插件,可一键生成基于ASP.NET MVC的解决方案源代码。其生成的 Demo 项目地址:http://mvcdemo.yellbuy.com/。本文末尾还将提供一个 Dynamic Linq ...

  • XML的JAVA 解析(一)(1)

    XML的JAVA 解析(一) 用SAX API解析XML文档为Java对象 提要SAX API在运行中的各方面表现都优于DOM API。下文将探索用SAX将XML文档解析为Java对象。SAX用起来不像DOM那样直观,所以我们要先熟悉一下SAX的用法。 (3,000 字(译注:英文原文三千字)) Robert Hustead 作 现在XML很火爆. 因为XML是一种自定义数

  • XML的JAVA 解析(一)(2)

    Hello world 现在我们明白了基本的SAX原理,我们可以着手做一点稍微有用的:从我们的XML样本文档中解析出值来,实现经典的hello world程序。首先,将每个感兴趣的元素印射到Java,我们在startElement 事件处重置我们的数据缓存。然后,当startElement已经发生,而endElement事件还没有时,我们把characters事件对应的所有字符收集起来。最后,

Global site tag (gtag.js) - Google Analytics