jQuery MiniUI

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

dataDrid 下拉列动态设置下拉内容 [复制链接]

Rank: 2

跳转到指定楼层
楼主
发表于 2019-3-11 11:43:24 |只看该作者 |倒序浏览
两个关联的表格,第一个表格可以增行,第二个表格中下拉列data根据第一个表格中内容动态变化,不是url,请问怎么设置。

Rank: 8Rank: 8

沙发
发表于 2019-3-11 12:27:58 |只看该作者
grid2.on("cellbeginedit",function(e){
    if(e.field=="...."){
          e.editor.setData(data);   //这个data可以根据grid1内容重新处理
    }
})

Rank: 2

板凳
发表于 2019-3-11 14:16:42 |只看该作者
felt 发表于 2019-3-11 12:27
grid2.on("cellbeginedit",function(e){
    if(e.field=="...."){
          e.editor.setData(data);   / ...

谢谢 前面一个问题解决了 但是现有又有个需求  第一个表格和第二表格是一对多的关系  第一个表格增行时,第二表格自动新增几行关联的数据 。结果第二个表格下拉列没有显示出数据 要点击下拉列才出来。

Rank: 8Rank: 8

地板
发表于 2019-3-11 15:10:53 |只看该作者
775272923 发表于 2019-3-11 14:16
谢谢 前面一个问题解决了 但是现有又有个需求  第一个表格和第二表格是一对多的关系  第一个表格增行时, ...

下拉列需要维护两个字段数据,field和displayField对应的数据都要维护,你新增的时候两个字段数据都要给到行。
http://www.miniui.com/demo/#src=datagrid/celllinkedit.html
比如说这例子第三列对应的两个字段数据初始都有的,页面上才能显示出来。

Rank: 2

5#
发表于 2019-3-11 15:26:00 |只看该作者
本帖最后由 775272923 于 2019-3-11 15:28 编辑
felt 发表于 2019-3-11 15:10
下拉列需要维护两个字段数据,field和displayField对应的数据都要维护,你新增的时候两个字段数据都要给 ...

两个字段都给了  但是还是不行   现在的情况是  第一个表格新增第一行 然后给第二个表格中下拉列设置data有效第二个表格能正确显示,但是第一个表格新增第二行的时候,使用同样的方法却没有作用。伪代码:
var dataGrid1=mini.get("dataGrid1");
var dataGrid2=mini.get("dataGrid2");
if(第一个表格加一行){
dataGrid2.getColumn("下拉列名称").editor.data=dataGrid1.getData();
}

Rank: 8Rank: 8

6#
发表于 2019-3-11 15:39:15 |只看该作者
775272923 发表于 2019-3-11 15:26
两个字段都给了  但是还是不行   现在的情况是  第一个表格新增第一行 然后给第二个表格中下拉列设置data ...

这代码是没用的。一直变化数据的,只能在oncellbeginedit事件内修改下拉数据。
你表格2新增的时候给到field和displayField对应的数据就能显示了,这时候已经和下拉数据无关了。
如果还是有问题,请提供简单例子来重现问题。基于你的例子来修改

Rank: 2

7#
发表于 2019-3-11 15:59:47 |只看该作者
本帖最后由 775272923 于 2019-3-11 16:09 编辑
felt 发表于 2019-3-11 15:39
这代码是没用的。一直变化数据的,只能在oncellbeginedit事件内修改下拉数据。
你表格2新增的时候给到fie ...

<body>

<a class="mini-button" iconCls="icon-user">新增</a>

<div id="dataGrid1" class="mini-datagrid" style="width: 100%;overflow: auto;border:0"
     idField="id"
     showColumnsMenu="true"
     showPager="false"
     showEmptyText="true"
     emptyText="请选择要收费的物品"
     allowCellEdit="true"
     allowCellSelect="true"
     showSummaryRow="true"
>

  <div property="columns">
    <div type="indexcolumn">序号</div>
    <div name="classesName"  field="classesName" headerAlign="center"    align="center"  width="150" >名称
    </div>
  </div>
</div>



  <div id="dataGrid2" class="mini-datagrid" style="width: 100%;overflow: auto;border:0"
       idField="id"
       showColumnsMenu="true"
       showPager="false"
       showEmptyText="true"
       emptyText="请选择要收费的物品"
       allowCellEdit="true"
       allowCellSelect="true"
       showSummaryRow="true"
      
  >

    <div property="columns">
      <div type="indexcolumn">序号</div>
      <div name="name"  field="name" headerAlign="center"    align="center"  width="150" >名称
      </div>
      <div name="classesForGoodsId"  field="classesForGoodsId"   displayField="classesName" headerAlign="center"    align="center"  width="120" type="comboboxcolumn">  所属班级
        <input property="editor"  class="mini-combobox" style="width:150px;" textField="classesName" valueField="classesForGoodsId" emptyText="请选择..."
               required="false" allowInput="false" showNullItem="true"   nullItemText="请选择..."/>
      </div>

    </div>
  </div>



</body>

<script>
mini.parse();
var dataGrid1=mini.get("dataGrid1");
var dataGrid2=mini.get("dataGrid2");

var data1=[{classesName:"1",classesForGoodsId:"1"}];
var data2=[{name:"2",classesName:"1",classesForGoodsId:"1"}]

function add() {
dataGrid1.addRows(data1);
dataGrid2.addRows(data2);
}

</script>


实际中data1是动态取得  data2根据data1的数据变化

Rank: 8Rank: 8

8#
发表于 2019-3-11 16:59:52 |只看该作者
775272923 发表于 2019-3-11 15:59
新增

你这代码有很大问题

1 只有固定下拉数据的列才能用type="comboboxColumn",并且和displayField是不能一起用的。
2 你新增了多次下拉数据的id重复了,id必须唯一
请参考我给你修改后的例子。



附件: 你需要登录才可以下载或查看附件。没有帐号?立即注册

Rank: 2

9#
发表于 2019-3-11 17:08:50 |只看该作者
谢谢  通过你的例子已经弄好了。

Archiver|普加软件

GMT+8, 2024-11-28 13:45 , Processed in 1.048104 second(s), 10 queries .

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部