jQuery MiniUI

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

datagrid中嵌入combobox联动 [复制链接]

Rank: 2

跳转到指定楼层
楼主
发表于 2013-8-13 17:42:40 |只看该作者 |倒序浏览
每次刷新后第一次点父combobox后子combobox没值。原因是没有单击子combobox就没有获取子combobox的id导致mini.get("deviceclass").load(a3101150003);值设不进去

<div field="manufacturer" name="manufacturer"  width="80px" renderer="onGenderRenderercs" >厂商
     <input property="editor" class="mini-combobox" id="manufacturer" style="width:100%;" textField="value" valueField="code" shownullitem="true" data="${applicationScope.dic['MANUFACTURER']}"/>
    </div>
    <div field="deviceclass" name="deviceclass"  width="80px" >设备
     <input property="editor" id="deviceclass"   class="mini-combobox" style="width:100%;" textField="value" shownullitem="true" valueField="code" />
    </div>
function fwxmChanged(){
      var a3101150002 = ${applicationScope.dic['3101150002']};
      var a3101150003 = ${applicationScope.dic['3101150003']};
      var a3101150004 = ${applicationScope.dic['3101150004']};
         var value=mini.get("manufacturer").getValue();
       if(value=="3101150002"){
       mini.get("deviceclass").load(a3101150002);
    }else if(value=="3101150003") {
        mini.get("deviceclass").load(a3101150003);
    } else if(value=="3101150004") {
        mini.get("deviceclass").load(a3101150004);
    } else {
     mini.get("deviceclass").load(null);
    }
       }

Rank: 8Rank: 8

沙发
发表于 2013-8-13 22:28:23 |只看该作者
首先你要明白一点,表格的编辑器只有在编辑的时候才会被创建对应单元格的所属编辑器,不然你表格有很多数据,全部创建会直接导致页面非常卡,性能很差,这就意味着你不能通过mini.get(id)的方式去获取编辑器,因为不存在,所以获取不到。

参考:http://www.miniui.com/demo/#src=datagrid/celllinkedit.html
监听oncellbeginedit事件,当开始编辑的时候,var editor = e.editor获取到编辑器对象,editor.setUrl()或者setData()随便你,这时候参考editor对应的是什么控件的API去操作就行了

Rank: 2

板凳
发表于 2013-8-14 09:47:38 |只看该作者
factory 发表于 2013-8-13 22:28
首先你要明白一点,表格的编辑器只有在编辑的时候才会被创建对应单元格的所属编辑器,不然你表格有很多数据 ...

根据你的方法可以进行联动了 但是子combobox的值选了后不能放到grid中

        function OnCellCommitEdit(e) {
            var grid = e.sender;
            var record = e.record;
            var field = e.field, value = e.value;
            if (field == "manufacturer") {                 
                grid.updateRow(record, { deviceclass: "", deviceclass_name: "" });
            }
        }

        var a3101150002 = ${applicationScope.dic['3101150002']};
                  var a3101150003 = ${applicationScope.dic['3101150003']};
                  var a3101150004 = ${applicationScope.dic['3101150004']};
        function OnCellBeginEdit(e) {        
            var grid = e.sender;
            var record = e.record;
            var field = e.field, value = e.value;
            var editor = e.editor;
            if (field == "deviceclass") {
                var id = record.manufacturer;
                if(id=="3101150002"){
                         editor.setData(a3101150002);
                             }else if(id=="3101150003") {
                                     editor.setData(a3101150003);
                             } else if(id=="3101150004") {
                                     editor.setData(a3101150004);
                             } else {
                                     editor.setData(null);
                             }
            }
        }

<div field="manufacturer" name="manufacturer" displayField="manufacturer_name" headerAlign="center" align="center"  width="80px" renderer="onGenderRenderercs" >厂商
                                        <input property="editor" class="mini-combobox" id="manufacturer" style="width:100%;" textField="value" valueField="code" shownullitem="true"  data="${applicationScope.dic['MANUFACTURER']}"/>
                                </div>
                                <div field="deviceclass" name="deviceclass" displayField="deviceclass_name" type="comboboxcolumn" headerAlign="center" align="center"  width="80px" >设备
                                        <input property="editor" id="deviceclass"   class="mini-combobox" style="width:100%;" textField="value" shownullitem="true" valueField="code" />
                                </div>

Rank: 8Rank: 8

地板
发表于 2013-8-14 10:10:31 |只看该作者
xuxiao478 发表于 2013-8-14 09:47
根据你的方法可以进行联动了 但是子combobox的值选了后不能放到grid中

        function OnCellCommitEd ...

注意你的displayField是否对应到你的文本字段,或者不要displayField,直接用列type="comboboxcolumn"

Archiver|普加软件

GMT+8, 2024-9-21 05:44 , Processed in 1.025028 second(s), 10 queries .

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部