jQuery easyUI datagrid 数据 合并行

发布于 2021-11-18 10:23:26 字数 1138 浏览 822 评论 10

设计数据表的格式问题,有知道的给指点一下啊,感谢啊

客户数有9条

//列的设计
columns : [
  [{
     field : 'customerId',
     align : 'center',
     title : '客户',
     width : 100,
   },{
     field : 'rivalFirms',
     align : 'center',
     title : '供应厂商',
     width : 100
   },{
     field : 'lunchAmount',
     align : 'center',
     title : '中餐',
     width : 70
} ] ],

//加载成功后合并行
onLoadSuccess:function(data){
 for(var i=0; i<$(this).datagrid('getRows').length; i++){
   $(this).datagrid('mergeCells',{
     index: i,
     field: 'customerId',
     width : 100, 
     rowspan: 2,
 });

												},


如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(10

旧城烟雨 2021-11-21 01:01:47

图1

点击保存时显示如下:就是让可编辑的输入框结束编辑状态时显示的内容错乱!!

tempDiv.find('table#innerdatagrid').datagrid('endEdit', i);

图2

但是取值没有错误,保存信息后从新加载数据时,数据又显示的和图1一样啦!

我想应该是合并时行的下标错乱!怎么能够让其在结束可编辑框状态下,UI不变形(如图2)啊?? 不明白!知道的帮忙解决一下啊?感谢

别低头,皇冠会掉 2021-11-21 01:00:29

也就是画一个复杂的Ui

梅窗月明清似水 2021-11-21 00:33:51

想不明白,你这是为了实现啥样的业务。需要这么做?

狠疯拽 2021-11-21 00:33:20

紧接上述问题,解决了赋值错误问题,又出现获取不到列的值的问题!!

// 原本获取值的方法(没有合并行的时候使用该方法完全可以获取个列的值)
var rows = tempDiv.find('table#innerdatagrid').datagrid('getRows');
if (rows != null && rows.length > 0) {
 for ( var i = 0; i < rows.length; i++) {
   params['nums'] += rows[i].customerId + ','//现在是只能获取这个字段的值啦!!
	 + rows[i].rivalFirms + ','
	 + rows[i].lunchAmount + ','
	 + rows[i].lunchPersonAmount + ','
	 + rows[i].dinnerAmount + ','
	 + rows[i].dinnerPersonAmount + ','
	 + rows[i].nightAmount + ','
	 + rows[i].nightPersonAmount + ','
	 + rows[i].childAmount + ','
	 + rows[i].childPersonAmount + ','
	 + rows[i].remark + ';';
 
	}
}

恋你朝朝暮暮 2021-11-20 23:37:11

上述的所有解决方法,都存在问题,在上述的基础上,我填写好供应商以后,选择下一行进行输入时,原本填写好的供应商信息,被赋值到了中餐那一列,而供应商的这一列被客户信息赋值啦!!一连串的问题!!!哎!!

现在我实在上述基础上使用加载数据成功后,将其设置为所有需要编辑的列都处于可编辑状态啦!

期待成功吧……

百思不得你姐 2021-11-20 18:49:07

实在没招啦啊!!

我使用一个蛋疼的方法,在取数据的时候,使用List集合,把数据add两次,然后使用上面的合并重复内容的方法!!!可以做到!!!

哎!!!

成熟的代价 2021-11-20 15:07:58

使用下面这种格式会报错的,而且不对啊!!怎么搞啊??

var merges = [
{index:0,rows:2},
{ index:1,  rows:2},
{ index:2,rows:2},
{ index:3,  rows:2},
{ index:4,rows:2},
{ index:5,  rows:2},
{ index:6,rows:2}];  
 for ( var i = 0; i <data.rows.length>0; i++) {
 $(this).datagrid('mergeCells',{
    index:merges[i].index,  
    field:'customerId',  
     rowspan:merges[i].rows,  
 });
};
永不分离 2021-11-19 14:53:04

这个方法是合并相同的,但是我想要的是固定的没两行合并一下,高手指点啊

奈何桥上唱咆哮 2021-11-19 11:52:55

网上google了一会找到的代码还是不行啊!!这个是合并文本相同的,帮忙看看啊!!

//网上封装的方法
mergeCellsByField:function(colList){
  var ColArray = colList.split(",");
  var tTable = $('div[identifier=' +window.reportDailyStatement.insert.identifier + ']').find('table#innerdatagrid');
  var TableRowCnts=tTable.datagrid("getRows").length;
 
  var tmpA;
  var tmpB;
  var PerTxt = "";
  var CurTxt = "";
  var alertStr = "";
  for (j=ColArray.length-1;j>=0 ;j-- ) {
   	PerTxt="";
 	tmpA=1;
 	tmpB=0;
 	for (i=0;i<=TableRowCnts ;i++ )
 	{
 	  if (i==TableRowCnts)
 	   {						             
		   CurTxt="";
 	   }
  	 else
  	  {
  	   CurTxt=tTable.datagrid("getRows")[i][ColArray[j]];
 	  }
	  if (PerTxt==CurTxt)
	  {	
	    tmpA+=1;
 	  }
 	 else
	  {
	   tmpB+=tmpA;
 	   tTable.datagrid('mergeCells',{
                  index:i-tmpA,
                  field:ColArray[j],
                  rowspan:tmpA,
                  colspan:null
    	    });
	    tmpA=1;
  	  }
	 PerTxt=CurTxt;
   	}
   }
 }

onLoadSuccess : function(data) {
	if (data.rows.length > 0) {
	//调用mergeCellsByField()合并单元格
	window.reportDailyStatement.insert.mergeCellsByField("customerId");
	}
},

我调用的时候就是这样的,但是不行啊!!!

深巷少女 2021-11-18 22:38:13

我点击 分享时,报了个错误……

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文