`
Mac_J
  • 浏览: 17947 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

JQuery MagicGrid 插件 Inline编辑示列(行内编辑)

阅读更多
MagicGrid Inline编辑示列(行内编辑),这是 MagicGrid 的一个扩展应用之一

为保持小巧灵活,没有直接写在组件中

此示例代码已于8月5日更新,添加了 MagicCombo 下拉框,并完善了数据处理逻辑

<link href="/javascript/combo/css/default.css" type="text/css" rel="stylesheet">
<script type="text/javascript" src="/js/mac/src/combo.js"></script>
<style type="text/css">
.combo .tr { display: block; }
.grid .combo .body { margin-top: 24px; }
.grid .cell { border: 1px solid #CCC; overflow: hidden; height: 20px; }
.grid .cellTf { border: none; height: 20px; width: 100%; }
.grid .cellNf { text-align: right; }
</style>
<script type="text/javascript">
$(function(){
	var gd = $('.view');
	var idx = 1; //index of new record
	var crs = {}; //changed records
	var dd = []; //data for combobox
	for(var i=1;i<=5; i++)
		dd.push({ code: i, name: 'Subject ' + i });
	gd.onChangeValue = function(r, f, v, b){
		var k = r.no, x = crs[k], o = gd.oldData[k] || {};
		b = (b==undefined? (o[f]==v):b);
		if(b){
			if(x){
				delete x[f];
				if($.isEmptyObject(x))
					delete crs[k];
			}
		}else{
			crs[k] = x || {};
			crs[k][f] = v;
		}
	} 
	var cols = [{
		field: 'no', title : '<input type="checkbox" name="all" />', width: 20,
		render: function(r, tr, vw){
			var a = $('<input type="checkbox" />');
			a.attr({ name: 'no', value: r.no });
			return a;
		}
	},{
		field: 'subject', title : 'Subject', width: 200,
		render: function(r, tr, vw){
			var f = 'subject';
			if(!tr.hasClass('selected'))
				return r[f].name;
			var a = $('<div class="combo"></div>');
			a.mac('combo', {
				keyField: 'code',
				displayField: 'name',
				multiSelect: false,
				width: 200,
				cols : [{
					field: 'code', width: 60
				},{
					field: 'name', width: 140
				}],
				data: dd,
				onSelect: function(me, sd, fd){
					var v = r[f] = fd[0] || {};
					var o = gd.oldData[r.no] || {};
					var b = o[f]?(o[f].code==v.code): false;
					gd.onChangeValue(r, f, v, b);
					me.close();
				}
			}).attr('name', f).select(r.subject.code);
			return a;
		}
	},{
		field: 'summary', title : 'Summary', width: 162,
		render: function(r, tr, vw){
			var f = 'summary';
			if(!tr.hasClass('selected'))
				return r[f];
			var a = $('<input type="text" class="cellTf" />');
			a.attr('name', f).change(function(){
				var v = r[f] = a.val();
				gd.onChangeValue(r, f, v);
			}).val(r[f]);
			return $('<div class="cell"></div>').append(a);
		}
	},{
		field: 'debit', title : 'Debit', width: 75, sort: true,
		render: function(r, tr, vw){
			var f = 'debit';
			if(!tr.hasClass('selected'))
				return '<div class="money">$' + r[f] + '</div>';
			var a = $('<input type="text" class="cellTf cellNf" />');
			a.attr('name', f).change(function(){
				var v = r[f] = a.val();
				if (!v || isNaN(v) || v > self.pageCount){
					alert('Please input a number.')
					return false;
				}
				gd.onChangeValue(r, f, v);
			}).val(r[f]);
			return $('<div class="cell"></div>').append(a);
		}
	}];
	gd.reRenderRow = function(tr){
		var k = tr.attr('name');
		$.each(cols, function(n, c){
			if(c.render && c.field!='no'){
				var td = tr.find('.td[name=' + c.field + ']');
				td.empty().append(c.render(gd.data[k], tr, gd));
			}
		});
	}
	gd.mac('grid', {
		key: 'no',
		cols : cols,
		loader: {
			params: {},
			autoLoad: false
		},
		onRowClick: function(){
			var tr = $(this), sr = gd.selected;
			if(tr.hasClass('selected'))
				return true;
			if(sr)
				gd.reRenderRow(sr.removeClass('selected'));
			gd.selected = tr.addClass('selected');
			gd.reRenderRow(tr);
			return true;
		},
		afterLoad: function(dd, po){
			gd.oldData = mac.eval(JSON.stringify(gd.data));
		}
	});
	gd.loadData([{
		no: 1,
		subject: { code: 1, name: 'Subject 1' },
		summary: 'summary 1',
		debit: 45.90
	},{
		no: 2,
		subject: { code: 2, name: 'Subject 2' },
		summary: 'summary 2',
		debit: 18.50
	}]);
	gd.seek('all').click(function(){
		gd.seek('no').prop('checked', $(this).prop('checked'));
	});
	$('.toolbar .item').click(function(){
		var ec = $(this), act = ec.attr('action');
		switch(act){
			case 'add':
				gd.addRow({ no: 'n'+idx, subject: dd[0], $summary: '', debit: 0, credit: 0 });
				idx++;
				break;
			case 'del':
				var keys = $.map(vw.find('input[name=no]:checked'), function(c){
		            return c.value;
		        });
		        if(keys.length<1){
		        	var s = gd.selected;
		        	if(s) keys.push(s.attr('name'));
		        }
		        if(keys.length<1){
		        	alert(Msg.info.select, [ Msg.del ]);
		        	return;
		        }
		        var pms = { keys: keys.join(',') };
				mac.confirm(Msg.confirm.message, function(){
					alert('Deletion is not allowed in this demo.');
//					$.post('user/delete.do', pms, function(data){
//						var ro = mac.eval(data);
//						if(ro.success) {
//							pg.refresh();
//							alert(Msg.info.success, [ Msg.del ]);
//						}else{
//							alert(Msg.info.error, [ Msg.del, ro.data ]);
//						}
//					});
				}, [ Msg.del ]);
				break;
			case 'chg':
				alert(JSON.stringify(crs));
				break;
		}
	});
});
</script>
<div class="toolbar">
	<div class="item button" action="add">Add Row</div>
	<div class="item button" action="del">Delete Row</div>
	<div class="item button" action="chg">Show Changed Data</div>
</div>
<div class="clear"></div>
<div class="viewPort">
	<div class="view grid"></div>
</div>
  • 大小: 4.1 KB
分享到:
评论

相关推荐

    Another JQuery Grid Plugin —— MagicGrid 插件

    MagicGrid is a small and flexible JQuery grid plugin. Although it only provide basic grid function, good design model give it great flexibility. It is open source and totally free. Before your start, ...

    jquery grid插件 -- 编辑表格

    **jQuery Grid 插件详解——打造可编辑表格** 在网页开发中,展示和管理大量数据时,表格(Table)是一个常见的元素。jQuery Grid 插件为网页开发者提供了一个强大而灵活的工具,用于创建功能丰富的表格,特别是...

    jquery插件库(jquery.treeview插件库)

    jquery插件库(jquery.treeview插件库)jquery插件库(jquery.treeview插件库)jquery插件库(jquery.treeview插件库)jquery插件库(jquery.treeview插件库)jquery插件库(jquery.treeview插件库)jquery插件库(jquery....

    jquery grid 插件

    **jQuery Grid 插件详解** 在Web开发中,表格数据展示和操作是一个常见的需求,而jQuery Grid插件正是为了满足这种需求而设计的。本文将详细介绍一个由个人编写的jQuery Grid插件,它具备分页、排序、JSON传输以及...

    jquery网页表格插件pqgrid-2.4.1.zip

    PQGrid就是这样一款优秀的jQuery表格插件,它在2.4.1版本中展现出了其强大而灵活的功能,包括排序、列拖动、表头搜索以及自定义显示列头等特性。本文将深入探讨PQGrid的核心功能和应用,以便开发者更好地理解和利用...

    高质量的jQuery表单验证插件 A Jquery Inline Form Validation

    `A Jquery Inline Form Validation` 是一个高质量的jQuery插件,专注于提供直观且高效的前端表单验证功能。这个插件通过在用户输入时即时显示错误信息,使得验证过程更加顺畅,减少了用户在提交表单后发现错误的情况...

    基于jquery的Grid插件

    支持分页、排序、列模型渲染等基本功能,数据模型等。支持行的双击事件。

    jQuery grid view plugin - jQuery表格插件

    在jQuery Grid View插件中,你可以自定义列的宽度、样式和内容,以适应不同的数据类型和展示需求。此外,插件通常还支持列的排序功能,用户可以通过点击表头来按升序或降序排列数据。分页功能则让用户能够更有效地...

    jQuery图片处理插件大全

    FullscreenGalleryThumbnailFlip.zip FullPageImageGallery.zip MergingImageBoxes.zip buildinternet-mosaic-ef45e11.zip woothemes-FlexSlider-23b22ac.zip jcobb-basic-jquery-slider-...等47个jQuery图片特效插件

    jquery头像编辑插件,编辑图片

    本篇文章将详细讲解基于jQuery的头像编辑插件及其核心功能,以及如何实现图片的编辑和裁剪,生成缩略图。 首先,"jquery头像编辑插件"是一种专门用于处理用户头像的工具,它通常结合HTML5的Canvas元素,提供图片...

    jquery grid demo

    `jQuery Grid` 是一个强大的数据网格插件,它允许开发者在网页上展示和操作结构化的数据。本演示集中了 `jQuery Flexigrid` 和 `DatePicker` 的应用,旨在展示如何结合这两个组件来创建功能丰富的用户界面。 ### ...

    jquery grid表格插件

    jQuery Grid是一款强大的表格插件,它提供了丰富的功能,如数据分页、排序、过滤以及列的动态操作等,极大地提升了开发效率和用户交互体验。本篇文章将深入解析jQuery Grid的使用方法,以实例为依托,助你更好地理解...

    Jquery 实现列的拖动 jquery grid

    对于内容的自由展示,jQuery Grid支持多种自定义格式化和编辑器,可以通过`formatter`和`editoptions`进行配置。例如,如果某列是日期类型,我们可以设置自定义的日期格式化函数: ```javascript { name: 'date...

    简单的jQuery富文本编辑器插件

    这款基于jQuery的简单富文本编辑器插件,结合了CSS3技术,提供了基础但实用的编辑选项,适用于快速构建具有文本编辑功能的网页界面。 首先,jQuery是一个广泛使用的JavaScript库,它的出现极大地简化了JavaScript的...

    jquery editable plugin--点击编辑文字插件

    jQuery可编辑插件是一种强大的前端开发工具,它允许用户直接在网页上对文本进行编辑,无需跳转到新的页面或弹出窗口。这种技术通常被称为In-place Editing或Inline Editing,提高了用户体验并简化了数据更新的过程。...

    jQuery的车牌插件

    而“jQuery的车牌插件”是这个库的一个扩展,专门针对车牌号码输入场景进行优化,提供了更加友好和高效的用户体验。 这款基于jQuery的车牌输入插件设计目标是让用户在网页上输入车牌号码时,能够享受到如同原生应用...

    jquery可编辑表格插件

    "jquery可编辑表格插件"就是基于jQuery的一种工具,旨在为网页中的表格提供动态编辑功能,使得用户可以直接在表格中进行数据的增删改查,极大地提升了交互性和用户体验。这种插件在数据展示和管理场景中尤其实用,...

    自己写的jquery 插件 grid

    【标题】:“自己写的jquery 插件 grid” 【描述】:“自己写的jquery 插件 grid 未完成” 这个项目的标题和描述揭示了它是一个基于jQuery的自定义插件,目标是构建一个类似于表格(grid)的数据展示和管理工具。...

    jquery插件库大全(200个).zip

    jquery插件库大全(200个): jqueryQQ表情插件 jquery下拉菜单导航 jquery下拉菜单栏 jquery仿Windows系统选中图标效果 jquery仿京东商品详情页图片放大效果 jquery仿百度新闻焦点轮播 jquery分离布局模版 jquery...

Global site tag (gtag.js) - Google Analytics