mini-datagrid 中调用 : onLoad=“onLoadSchedule”
//根据相同的编号进行动态合并相同值的列
function onLoadSchedule(e) {
var grid = e.sender;
var len = grid.data.length;
var i = 0,num = 1, b = 1,a = 0, no = 0;;
//定义数组
var marges = [];
for (i; i < len; i++) {
if (i == len - 1) {
var k = i + 1 - num;
//动态添加合并的参数,rowIndex开始行数(0开始),columnIndex列数(0开始),rowSpan合并的行数,colSpan合并的列数
for (var j = 1; j < grid.columns.length; j++) {
if (j < 5) {
marges.push({ rowIndex: k, columnIndex: j, rowSpan: num, colSpan: 0 });
//循环2级合并类判断
no += num; //获取当前的列数
for (a; a < no; a++) {
if (a == no - 1) { //最后一行的合并
var k = i + 1 - b;
marges.push({ rowIndex: k, columnIndex: 5, rowSpan: b, colSpan: 0 });
continue;
if (grid.data[a].GWname == grid.data[a + 1].GWname) {
b++; //做为计算的参数
if (grid.data[a].GWname != grid.data[a + 1].GWname) {
var k = a + 1 - b;
marges.push({ rowIndex: k, columnIndex: 5, rowSpan: b, colSpan: 0 });
b = 1;
num = 1;
grid.mergeCells(marges);
continue;
//如果两个数的编号相等
if (grid.data[i].ProjCode == grid.data[i + 1].ProjCode) {
num++; //做为计算的参数
//编号不相等的时候进行合并
if (grid.data[i].ProjCode != grid.data[i + 1].ProjCode) {
//取出要合并的行数,i从0开始
var k = i + 1 - num;
//动态添加合并的行
for (var j = 1; j < grid.columns.length; j++) {
if (j < 5) { //从2行到第四行的合并
marges.push({ rowIndex: k, columnIndex: j, rowSpan: num, colSpan: 0 });
no += num; //获取此时的行数
num = 1; //清空num值
//循环判断2级合并数据
for (a; a < no; a++) {
//岗位一致
if (grid.data[a].GWname == grid.data[a + 1].GWname) {
b++; //做为合并行的参数的计数
//岗位不一致
if (grid.data[a].GWname != grid.data[a + 1].GWname) {
var k = a + 1 - b;
//生成合并列的数组
marges.push({ rowIndex: k, columnIndex: 5, rowSpan: b, colSpan: 0 });
b = 1; //清空用于计数的b
grid.mergeCells(marges);
[img]http://www.miniui.com/docs/api/images/mergecells.png[/img]
参考示例:[url=http://www.miniui.com/demo/datagrid/mergecells.html]合并单元格[/url]
调用方法:margeCells。如下代码:
grid.on("load", ...
用的是miniUI框架,所以只谈miniUI中的单元格合并。
(1)必须添加onLoad="onLoad"
(2)需要在JS中进行单元格合并控制,实现代码如下: function onLoad(e) {
var grid = e.sender; var marges = [
mini.DataGrid表格。实现分页加载、自定义列、单元格渲染、行编辑器、锁定列、过滤行、汇总行等功能。Extend mini.PanelUsage
<div id="datagrid1" class="mini-datagrid" style="width:700px;height:250px;"
url="../data/AjaxService.as...
如效果图,拿到的需求是要合并考核方案相同的数据行的前7列
根据某一列的属性值来判断是否需要合并单元格,图中按照考核方案是否相同,合并了2行,也可能存在合并3行4行的情况,所以合并是动态的。
function mergeCells(grid) { //grid为Datagrid对象
//var grid = e.sender;
不允许选择今天之后的日期
ondrawdate="onDrawOfHappenTime" function onDrawOfHappenTime(e) { var ...
最近参加了组织部的项目,由于加载的表头需要从数据库中读取,而且你也不知道有几个,这就用到了动态加载列。经过研究理解,有了一点点成效。。。
由于本项目中既有固定的列也有动态添加的列,这个思路就是:先将固定的列写下来,从数据库中查询动态添加的列,将这些列表头信息放到一个对象数组中,再循环数组分别为每一列赋值。这是实现的主要思想,接下来就看如何去实现。
首先先建一个ViewModel
<td align="right" width="22%" colspan="3">
<a class="mini-button" style="width:80px" onclick="search()">查 询</a>
&a
var grid = mini.get("grid");
grid.on("load", function () {
grid.mergeColumns(["需要合并的字段的name值"]);
注意:该字段一定要有name属性,且只在值相同的情况下能够进行合并。
如需合并多列的单元格,可用逗号隔开
grid.on("load", function () {
grid.mergeColumns(["name1", "name2","
官方的文档有demo,我们就不说官方的:参考http://www.miniui.com/docs/api/index.html#ui=datagrid
这里的rowIndex,columnIndex分别代表行和列索引,均是从0开始算,rowSpan和colSpan分别代表要合并的行和列的宽度。
项目中需把相同的商品把它的出库及入库及结存库位进行合并单元格处理效果如下:
<div ...
init: function () { mini.parse(); this.grid = mini.get("jsDatagrid"); var grid1 = mini.get("jsDatagrid"); this.grid.load(null,function(e){ var s = e.result.data[0].data; var ...