zoukankan      html  css  js  c++  java
  • 【EasyUI】 datagrid 竖排绑定数据

    展示效果:

    datagrid绑定:
     $('#id').datagrid({
            fit: true,
            view: transposedview,
            headerTextAlign: "center",
            headerWidth: 100, 
            itemWidth: 200,
            title: title,
            fitColumns: false,
            border: true,
            singleSelect: true,
            collapsible: false,
            scrollbarSize: 0,
            url: ajaxUrl,
            method: 'get',
            queryParams: params,
            columns: cols,
            pagination: pagination,
            onClickRow: clickRow,
            onSelect: selectRow,
            onLoadSuccess: loadSuccess,
            onLoadError: function () {
            }
        });
    

      插件代码:

    //----------------------------------------------------//
    //实现 datagrid 竖排显示
    //
    //----------------------------------------------------//
    var transposedview = $.extend({}, $.fn.datagrid.defaults.view, {
    	render: function(target, container, frozen){
    	
    		$('.datagrid-view1', $(target).parent()).css('display', 'none');
    		
    		var state = $.data(target, 'datagrid');
    		var opts = state.options;
    		if (frozen){
    			if (!(opts.rownumbers || (opts.frozenColumns && opts.frozenColumns.length))){
    				return;
    			}
    		}
    		
    		var rows = state.data.rows;
    		var fields = $(target).datagrid('getColumnFields', frozen);
    		var table = [];
    		table.push('<table class="datagrid-btable" cellspacing="0" cellpadding="0" border="0"><tbody>');
    		if (opts.rownumbers){
    			table.push('<tr>');
    			if (opts.showHeader) {
    				table.push('<td class="datagrid-header"></td>');
    			}
    			for(var i=0; i<rows.length; i++) {
    				var row = rows[i];
    				var selected = row == $(target).datagrid('getSelected');
    				var rownumber = i+1;
    				if (opts.pagination){
    					rownumber += (opts.pageNumber-1)*opts.pageSize;
    				}
    				if (frozen){
    					table.push('<td><div class="datagrid-cell-rownumber datagrid-cell-height');
    				} else {
    					table.push('<td><div class="datagrid-cell-rownumber');
    				}
    				if (selected == true){
    					table.push(' datagrid-row-selected');
    				} else {
    					if (i % 2 && opts.striped){
    						table.push(' datagrid-row-alt');
    					} else {
    						table.push('');
    					}
    				}
    				table.push('">'+rownumber+'</div></td>');
    			}
    			table.push('</tr>');
    		}
    		for(var j=0; j<fields.length;j++) {
    			var field = fields[j];
    			var col = $(target).datagrid('getColumnOption', field);
    			if (col && !col.expander){
    				table.push('<tr>');
    				if (opts.showHeader) {
    					var attr = '';
    					if (col.rowspan) attr += 'rowspan="' + col.rowspan + '" ';
    					if (col.colspan) attr += 'colspan="' + col.colspan + '" ';
    					table.push('<td class="datagrid-header" ' + attr);
    					if (col.checkbox){
    						table.push(' field="' + col.field + '"><div class="datagrid-header-check"><input type="checkbox"/></div>');
    					} else if (col.field){
    						table.push(' field="' + col.field + '"><div class="datagrid-cell datagrid-header-' + j + '"><span>' + col.title + '</span><span class="datagrid-sort-icon"> </span></div>');
    					} else {
    						table.push('><div class="datagrid-cell-group">' + col.title + '</div>');
    					}
    					table.push('</td>');
    				}
    				for(var i=0; i<rows.length; i++) {
    					var row = rows[i];
    					var selected = row == $(target).datagrid('getSelected');
    					var style = '' + (col.width) + 'px;';
    					style += 'text-align:' + (col.align || 'left');
    					if (col.styler){
    						style += ";" + col.styler(row[field], row, i);
    					}
    					table.push('<td>');
    					table.push('<div style="' + style + '" datagrid-row-index="' + i + '" datagrid-column-index="' + j + '"');
    					if (col.checkbox){
    						table.push('class="datagrid-cell-check');
    					} else {
    						table.push('class="datagrid-cell');
    					}
    					table.push(' datagrid-cell-' + j + '-' + i);
    					if (selected == true){
    						table.push(' datagrid-row-selected');
    					} else {
    						if (i % 2 && opts.striped){
    							table.push(' datagrid-row-alt');
    						} else {
    							table.push('');
    						}
    					}
    					if (frozen){
    						table.push('datagrid-cell-height ');
    					}
    					table.push('">');
    					if (col.checkbox){
    						if (selected){
    							table.push('<input type="checkbox" checked="checked"/>');
    						} else {
    							table.push('<input type="checkbox"/>');
    						}
    					} else if (col.formatter){
    						table.push(col.formatter(row[field], row, i));
    					} else {
    						table.push(row[field]);
    					}
    					table.push('</div>');
    					table.push('</td>');
    				}
    				table.push('</tr>');
    			}
    		}
    		table.push('</tbody></table>');
    		
    		$(container).html(table.join(''));
    		
    		var fieldCount = fields.length;
    		for(var j=0; j<fields.length;j++) {
    			var field = fields[j];
    			var col = $(target).datagrid('getColumnOption', field);
    			if (col && !col.expander) {
                    //属性自定义 jqf
    				if (opts.headerWidth){
    				    $('.datagrid-header-' + j, container).width(opts.headerWidth); 
    				}
    				if (opts.headerTextAlign) {
    				    $('.datagrid-header-' + j, container).css("text-align", opts.headerTextAlign);
    				}
    				for(var i=0; i<rows.length; i++) {
    					var row = rows[i];
    					if (opts.itemWidth){
    						$('.datagrid-cell-' + j + '-' + i, container).width(opts.itemWidth);
    					}
    					$('.datagrid-cell-' + j + '-' + i, container).mouseover(function(){
    						var index = $(this).attr('datagrid-row-index');
    						for(var f=0; f<fieldCount;f++) {
    							$('.datagrid-cell-' + f + '-' + index, container).addClass('datagrid-row-over');
    						}
    					}).mouseout(function(){
    						var index = $(this).attr('datagrid-row-index');
    						for(var f=0; f<fieldCount;f++) {
    							$('.datagrid-cell-' + f + '-' + index, container).removeClass('datagrid-row-over');
    						}
    					}).click(function(){
    						var index = $(this).attr('datagrid-row-index');
    						if ($(this).hasClass('datagrid-row-selected')){
    							$(target).datagrid('unselectRowT', {target:target, index:index});
    						} else {
    							$(target).datagrid('selectRowT', {target:target, index:index});
    						}
    						if (opts.onClickRow){
    							opts.onClickRow.call(this, index, rows[index]);
    						}
    					}).dblclick(function(){
    						var index = $(this).attr('datagrid-row-index');
    						if (opts.onDblClickRow){
    							opts.onDblClickRow.call(this, index, rows[index]);
    						}
    					});
    				}
    			}
    		}
    	},
    	
    	onBeforeRender: function(target){
    		$('.datagrid-header', $(target).parent()).css('display', 'none');
    	}
    });
    
    $.extend($.fn.datagrid.methods, {
    	selectRowT: function(target, args){
    		var grid = $.data(target[0], 'datagrid').grid;
    		var opts = $.data(target[0], 'datagrid').options;
    		var data = $.data(target[0], 'datagrid').data;
    		var selectedRows = $.data(target[0], 'datagrid').selectedRows;
    		
    		var tds = $('.datagrid-body div[datagrid-row-index='+args.index+']',grid);
    		var ck = $('.datagrid-body div[datagrid-row-index='+args.index+'] .datagrid-cell-check input[type=checkbox]',grid);
    		if (opts.singleSelect == true){
    			this.clearSelectionsT(target);
    		}
    		tds.addClass('datagrid-row-selected');
    		ck.attr('checked', true);
    		
    		if (opts.idField){
    			var row = data.rows[args.index];
    			for(var i=0; i<selectedRows.length; i++){
    				if (selectedRows[i][opts.idField] == row[opts.idField]){
    					return;
    				}
    			}
    			selectedRows.push(row);
    		}
    		opts.onSelect.call(target[0], args.index, data.rows[args.index]);
    	},
    	unselectRowT: function(target, args){
    		var opts = $.data(target[0], 'datagrid').options;
    		var grid = $.data(target[0], 'datagrid').grid;
    		var selectedRows = $.data(target[0], 'datagrid').selectedRows;
    		
    		var tds = $('.datagrid-body div[datagrid-row-index='+args.index+']',grid);
    		var ck = $('.datagrid-body div[datagrid-row-index='+args.index+'] .datagrid-cell-check input[type=checkbox]',grid);
    		tds.removeClass('datagrid-row-selected');
    		ck.attr('checked', false);
    		
    		var row = $.data(target[0], 'datagrid').data.rows[args.index];
    		if (opts.idField){
    			for(var i=0; i<selectedRows.length; i++){
    				var row1 = selectedRows[i];
    				if (row1[opts.idField] == row[opts.idField]){
    					for(var j=i+1; j<selectedRows.length; j++){
    						selectedRows[j-1] = selectedRows[j];
    					}
    					selectedRows.pop();
    					break;
    				}
    			}
    		}
    		opts.onUnselect.call(target[0], args.index, row);
    	},
    	clearSelectionsT: function(target){
    		var grid = $.data(target[0], 'datagrid').grid;
    		
    		$('.datagrid-body div.datagrid-row-selected', grid).removeClass('datagrid-row-selected');
    		$('.datagrid-body .datagrid-cell-check input[type=checkbox]', grid).attr('checked', false);
    		var selectedRows = $.data(target[0], 'datagrid').selectedRows;
    		while(selectedRows.length > 0){
    			selectedRows.pop();
    		}
    	},
    	getSelected: function(target){
    		var opts = $.data(target[0], 'datagrid').options;
    		var grid = $.data(target[0], 'datagrid').grid;
    		var data = $.data(target[0], 'datagrid').data;
    		if (opts.idField){
    			return $.data(target[0], 'datagrid').selectedRows;
    		}
    		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]);
    			}
    		});
    		var addedIndex = [];
    		$('.datagrid-view2 .datagrid-body div.datagrid-row-selected', grid).each(function(){
    			var index = parseInt($(this).attr('datagrid-row-index'));
    			var found = false;
    			for (var i = 0; i < addedIndex.length; i++) {
    				if (addedIndex[i] == index) {
    					found = true;
    					break;
    				}
    			}
    			if (data.rows[index] && !found){
    				rows.push(data.rows[index]);
    				addedIndex.push(index);
    			}
    		});
    		return rows.length>0 ? rows[0] : null;
    	}
    });
    

      有疑问可评论留言。。。

  • 相关阅读:
    SpringBoot多数据源启动器
    数据结构模拟器
    mysql5.7查询今天、昨天、本周、上周、本月、上月数据
    SpringBoot项目本地可以发送邮件,部署到阿里云服务器发送邮件失败的解决方法
    Centos7搭建Maven私服-Nexus3.19.1-01
    Linux中部署jar包并指定日志输出文件
    ThreadLocal是什么?谈谈你对他的理解
    leetcode-双指针遍历
    不要再纠结css/js/html有没有必要放在WEB-INF下了
    数据库的表的字段名称与实体类(pojo)不对应解决方案
  • 原文地址:https://www.cnblogs.com/qifei-jia/p/7864862.html
Copyright © 2011-2022 走看看