jQuery MiniUI

标题: datagrid 加载 combobox [打印本页]

作者: 晓花ovo    时间: 2021-1-14 15:33:58     标题: datagrid 加载 combobox

本帖最后由 晓花ovo 于 2021-1-14 16:07 编辑

前端代码:
  1. <div id="add_ToCart_grid" class="mini-datagrid" style="width:650px;height:280px;"
  2.     url="${request.getContextPath()}/controller/goodsSpec/queryGoodsSpecForGrid"
  3.     allowCellEdit="true" allowCellSelect="true" multiSelect="true">
  4.    <div property="columns">

  5.       <div field="specTitle" width="120" headerAlign="center" allowSort="true">规格名</div>

  6.       <div field="specItem" width="150" headerAlign="center" >规格项
  7.          <input property="editor" class="mini-combobox" style="width:100%;" valueField="id" textField="name"/>
  8.       </div>
  9.    </div>
  10. </div>
复制代码
接收到的数据
[attach]13115[/attach]
[attach]13114[/attach]

是否可以设置上去,我上面的代码设置后全是object
没点的时候:
[attach]13118[/attach]
点击后:

[attach]13119[/attach]




作者: 晓花ovo    时间: 2021-1-14 15:36:29

有没有办法设置上去呢,我现在想的还有种方法就是等datagrid加载完成后,然后根据name获取到所有的combobox然后再一一设置上去
作者: 晓花ovo    时间: 2021-1-14 16:59:34

刚才还尝试了name获取
前端代码开始那样子,不过input加了个name属性
  1. <input name="specItemCombobox" property="editor" class="mini-combobox" style="width:100%;" valueField="id" textField="name"/>
复制代码
之后:js代码
  1. add_ToCart_grid.load({goodsId:goodsId});
  2.                
  3. add_ToCart_window.show();

  4. var specItemCombobox = mini.getsbyName("specItemCombobox");
  5. console.log(specItemCombobox);
复制代码
打印后的值为一个空数组[]
作者: felt    时间: 2021-1-15 09:11:15

晓花ovo 发表于 2021-1-14 16:59
刚才还尝试了name获取
前端代码开始那样子,不过input加了个name属性之后:js代码打印后的值为一个空数组[] ...

http://www.miniui.com/demo/#src=datagrid/celllinkedit.html
参考职位列

combobox数据加载和表格数据加载是需要分开的。
作者: 晓花ovo    时间: 2021-1-15 15:12:17

felt 发表于 2021-1-15 09:11
http://www.miniui.com/demo/#src=datagrid/celllinkedit.html
参考职位列

好的谢谢
作者: felt    时间: 2021-1-15 16:49:30

felt 发表于 2021-1-15 09:11
http://www.miniui.com/demo/#src=datagrid/celllinkedit.html
参考职位列

你这里是行数据里面带了本行下拉数据的选项。
也可以这样处理
<div field="specItem_id" displayField="specItem_text" width="150" headerAlign="center" >规格项
         <input property="editor" class="mini-combobox" style="width:100%;" valueField="id" textField="name"/>
      </div>
grid.on("cellbeginedit",function(e){
    if(e.field=="specItem_id"){
            e.editor.setData(e.record.specItem);
    }
})
但是正常表格数据和下拉数据是分开加载的。

作者: 晓花ovo    时间: 2021-1-19 08:43:07

felt 发表于 2021-1-15 16:49
你这里是行数据里面带了本行下拉数据的选项。
也可以这样处理
规格项

这个样子设置后,调用grid.getData()的时候获取的就是下拉框的所有数据,而不是当前选择的下拉框的数据
作者: felt    时间: 2021-1-19 09:04:22

晓花ovo 发表于 2021-1-19 08:43
这个样子设置后,调用grid.getData()的时候获取的就是下拉框的所有数据,而不是当前选择的下拉框的数据 ...

field="specItem_id" displayField="specItem_text"
这两个字段对应的才是你选择的数据。
作者: 晓花ovo    时间: 2021-1-19 09:08:58

felt 发表于 2021-1-19 09:04
field="specItem_id" displayField="specItem_text"
这两个字段对应的才是你选择的数据。 ...

奥这样子,谢谢啦
作者: 晓花ovo    时间: 2021-1-20 09:47:43

felt 发表于 2021-1-19 09:04
field="specItem_id" displayField="specItem_text"
这两个字段对应的才是你选择的数据。 ...

您好,再麻烦问一下,这个为什么我的data中combobox的onchangevalue事件会“延迟”,比如我选择了颜色“红色”,此时调用grid.getData()时,获取到的数据没有这个颜色,但是我再重新选择颜色“绿色”,这时候调用grid.getData(),获取到的combobox的值就是上次选择的“红色”,这个是什么原因呢
作者: 晓花ovo    时间: 2021-1-20 09:57:24

晓花ovo 发表于 2021-1-20 09:47
您好,再麻烦问一下,这个为什么我的data中combobox的onchangevalue事件会“延迟”,比如我选择了颜色“ ...
  1.         <div id="add_ToCart_grid" class="mini-datagrid" style="width:650px;height:280px;"
  2.                  url="${request.getContextPath()}/controller/goodsSpec/queryGoodsSpecForGrid"
  3.                  allowCellEdit="true" allowCellSelect="true" multiSelect="true" >
  4.                 <!--OnCellBeginEdit="OnCellBeginEdit"-->
  5.                 <div property="columns">

  6.                         <div name="specTitleName" field="specTitle" width="120" headerAlign="center" allowSort="true">规格名</div>

  7.                         <div field="specItem_id" displayField="specItem_text"  width="150" headerAlign="center">规格项
  8.                                 <input property="editor" class="mini-combobox" onvaluechanged="getSpecPrice()" style="width:100%;" valueField="id" textField="text"/>
  9.                         </div>
  10.                 </div>
  11.         </div>
复制代码
js
  1.         function getSpecPrice(){
  2.                 var goodsId = mini.get("add_ToCart_goodsId").getValue();
  3.                 var data = add_ToCart_grid.getData();
  4.                 var dataJson = JSON.stringify(data);
  5.                 console.log(dataJson);
  6.         }
复制代码

作者: felt    时间: 2021-1-20 10:07:35

晓花ovo 发表于 2021-1-20 09:57
js

combobox值变动的时候还没有把数据更新到表格上,所以你获取到的表格数据还是未编辑的。
建议在oncellendedit事件内再获取,这时才能确保这个数据是已经更新到表格内了。
作者: 晓花ovo    时间: 2021-1-20 11:18:04

felt 发表于 2021-1-20 10:07
combobox值变动的时候还没有把数据更新到表格上,所以你获取到的表格数据还是未编辑的。
建议在oncellend ...

好啦,谢谢啦!
作者: happylover1278    时间: 2021-2-2 17:08:37

晓花ovo 发表于 2021-1-20 09:47
您好,再麻烦问一下,这个为什么我的data中combobox的onchangevalue事件会“延迟”,比如我选择了颜色“ ...

为什么要用onvaluechanged获取值,你改下拉框的时候,下拉框组件还没有失焦,表格的数据还没被更新。表格更新后有自己的回调




欢迎光临 jQuery MiniUI (http://miniui.com/discuss/) Powered by Discuz! X2