jQuery MiniUI

 找回密码
 立即注册
查看: 1953|回复: 6
打印 上一主题 下一主题

如何区别表格行以及保存问题 [复制链接]

Rank: 3Rank: 3

跳转到指定楼层
楼主
发表于 2017-4-25 20:39:06 |只看该作者 |倒序浏览
现在需要做一个类似于excel的输入功能,使用miniui的datagrid控件,使用回车切换单元格,到每行的最后一个单元格按回车就产生新行。输入完成后(多行)后再保存到数据库。现有如下问题:
1、每行都有若干的下拉联动。
  1. <div displayfield="wsname" width="60"  headerAlign="center">
  2.                                 车间 <input property="editor" class="mini-combobox" id="wsname"
  3.                                         style="width: 100%;" url="getallcj" textField="wsname"
  4.                                         valueField="wsid" onvaluechanged="onCJChanged" multiselect="false" />
  5.                         </div>
  6.                         <div   displayField="groupname" width="50"  headerAlign="center">
  7.                                 班组 <input property="editor" class="mini-combobox"  
  8.                                         style="width: 100%;"  textField="groupname"
  9.                                         valueField="groupid" multiselect="false" id="groupid"/>
  10.                         </div>
复制代码
  1. function  onCJChanged(e){
  2.             var id = e.value;
  3.             var groupid = mini.get("groupid");
  4.             var cell = grid.getCurrentCell();
  5.              var rowIndex = grid.indexOf(cell[0]);
  6.             console.log(rowIndex);
  7.             var groupid = grid.getCellEditor(1, rowIndex);
  8.             groupid.setValue("");
  9.             
  10.             var url = "getallbz?cjid=" + id;
  11.             groupid.setUrl(url);
  12.             groupid.select(0);
  13.         }
复制代码
问题:当有多行时,后面的回车生成新行后,如果第一列选择不同的值的时候,就会将这个新值修改前面所有的下拉框值。就是说:假设第一行第一列下拉选择A,第二列关联的有3条数据。第二行第一列选择B,它关联2条数据,这时会将第一行的第二列下拉数据也变成2条。应该是哪个属性用错了。

2、输入多行后,要一起保存,此时如何循环获得每一个单元格控件的值呢?

谢谢!

Rank: 8Rank: 8

沙发
发表于 2017-4-26 09:34:36 |只看该作者
1 第一列第二列都需要加上field
field是必须的,你保存的时候需要处理2个字段,field对应的字段,和displayField对应的字段。
2 grid.commitEdit()结束编辑
然后grid.getChanges()获取所有增删改数据处理保存

Rank: 3Rank: 3

板凳
发表于 2017-4-26 11:21:56 |只看该作者
felt 发表于 2017-4-26 09:34
1 第一列第二列都需要加上field
field是必须的,你保存的时候需要处理2个字段,field对应的字段,和display ...
  1. function delrecord() {
  2.                         var grid = mini.get("datagrid1");
  3.                         var row = grid.getSelected();
  4.                         if (row) {
  5.                                 if (confirm("确定删除此记录?")) {
  6.                                         grid.loading("删除中,请稍候......");
  7.                                         grid.cancelEditRow (row);
  8.                                         grid.removeRow(row);
  9.                                 }
  10.                         }
  11.                 }
复制代码
删除datagrid上的行,为何总在那里显示:"删除中,请稍候......",仅仅是页面上的操作,还没有和数据库交互。

Rank: 8Rank: 8

地板
发表于 2017-4-26 13:14:30 |只看该作者
cxhold 发表于 2017-4-26 11:21
删除datagrid上的行,为何总在那里显示:"删除中,请稍候......",仅仅是页面上的操作,还没有和数据库交 ...

因为你运行了加载loading,grid.loading(。。。),并没有刷新表格或主动取消遮罩

Rank: 3Rank: 3

5#
发表于 2017-4-26 14:08:21 |只看该作者
felt 发表于 2017-4-26 13:14
因为你运行了加载loading,grid.loading(。。。),并没有刷新表格或主动取消遮罩 ...

谢谢!

Rank: 3Rank: 3

6#
发表于 2017-4-26 14:17:34 |只看该作者
cxhold 发表于 2017-4-26 14:08
谢谢!
  1. function onKeyEnter(e){
  2.                         var curid = grid.getSelected()._uid-1;
  3.                         if( curid == grid.data.length-1 ){
  4.                                 if( mini.get("copyhpno").checked){
  5.                                         var data = mini.clone(grid.getData());
  6.                                         var gid = data[curid].goodid;
  7.                                         var gno = data[curid].goodno;
  8.                                         var gname = data[curid].goodname;
  9.                                         var gunit = data[curid].goodunit;
  10.                                         var row={};
  11.                                         grid.addRow(row, curid+2);
  12.                                         var gcc = grid.getCellEditor(2, curid+2);
  13.                                         gcc.doValueChanged();
  14.                                         grid.updateRow(row,{goodid:gid,goodname:gname,goodunit:gunit,goodno:gno});
  15.                                 }
  16.                                 else{
  17.                                         var row = {};
  18.                             grid.addRow(row, curid+2);
  19.                                 }
  20.                     /* var data = grid.getData();
  21.                     console.log(data); */
  22.                         }
  23.                 }
复制代码
我在最后一列回车,产生新行,同时获得上一行的下拉框选中的值及关联的属性填充进来,但是发现把上行的关联值清空了?是咋回事?
谢谢!

Rank: 8Rank: 8

7#
发表于 2017-4-26 16:07:58 |只看该作者
cxhold 发表于 2017-4-26 14:17
我在最后一列回车,产生新行,同时获得上一行的下拉框选中的值及关联的属性填充进来,但是发现把上行的关 ...

var gcc = grid.getCellEditor(2, curid+2);
gcc.doValueChanged();

去掉,初始的时候不需要联动吧
光看这些代码看不清,最好提供简单的重现问题的页面来分析。

Archiver|普加软件

GMT+8, 2024-5-20 18:03 , Processed in 1.060304 second(s), 10 queries .

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部