jQuery MiniUI

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

表格中新增行如何动态渲染下拉框 [复制链接]

Rank: 6Rank: 6

跳转到指定楼层
楼主
发表于 2019-4-23 14:57:35 |只看该作者 |倒序浏览
本帖最后由 happylover1278 于 2019-4-23 14:59 编辑


如图所示,此行 为点击上方增加产生   这行其中的一个单元格,为ajax动态获取的下拉框数据。然而一开始  由于表格中没有数据  此时并获取不到这个下拉input框,后来我尝试在增加行后  用$('')方式获取  然后便利所有的jqury对象拿到最后一个  转成mini对象后赋值,也失败了  请问该怎么做
附件: 你需要登录才可以下载或查看附件。没有帐号?立即注册

Rank: 8Rank: 8

沙发
发表于 2019-4-23 16:38:28 |只看该作者
如果你这列的下拉数据是固定的,你可以把数据放到列里面
<div field="..."   type="comboboxColumn" ...
     <div property="editor"  class="mini-combobox" url="..."

如果不是固定的,那么可以在oncellbeginedit的时候给这列加数据
grid.on("cellbeginedit",function(e){
    if(e.field=="..."){
         e.editor.setUrl(url);
   }
})

Rank: 6Rank: 6

板凳
发表于 2019-4-23 16:44:45 |只看该作者
felt 发表于 2019-4-23 16:38
如果你这列的下拉数据是固定的,你可以把数据放到列里面

我试试   谢啦

Rank: 6Rank: 6

地板
发表于 2019-4-23 17:57:16 |只看该作者
felt 发表于 2019-4-23 16:38
如果你这列的下拉数据是固定的,你可以把数据放到列里面


不知道哪里有不良内容无法提交
附件: 你需要登录才可以下载或查看附件。没有帐号?立即注册

Rank: 6Rank: 6

5#
发表于 2019-4-23 18:12:22 |只看该作者
本帖最后由 happylover1278 于 2019-4-23 18:14 编辑
felt 发表于 2019-4-23 16:38
如果你这列的下拉数据是固定的,你可以把数据放到列里面

我发现cellbeginedit每次点击都会触发,其实这列的所有select下拉框的数据虽然是动态获取的,但是只需要加载一次就都能拿到,而且由于后台返回的格式不标准,我希望拿到数据后二次包装后调用select.setData()来进行赋值,而不是直接使用 url="..."  或者  setUrl(url)

Rank: 8Rank: 8

6#
发表于 2019-4-23 18:41:38 |只看该作者
happylover1278 发表于 2019-4-23 18:12
我发现cellbeginedit每次点击都会触发,其实这列的所有select下拉框的数据虽然是动态获取的,但是只需要加 ...

editor.setData(data);

http://www.miniui.com/demo/#src=datagrid/rowedit_openpage.html
弹出编辑参考这个示例

Rank: 6Rank: 6

7#
发表于 2019-4-24 10:42:09 |只看该作者
felt 发表于 2019-4-23 18:41
editor.setData(data);

http://www.miniui.com/demo/#src=datagrid/rowedit_openpage.html

还有一个需求 如果需要判断当前行的某个状态  来控制当前行的select下拉框是否能够被编辑   这个要怎么办

Rank: 8Rank: 8

8#
发表于 2019-4-24 10:58:24 |只看该作者
happylover1278 发表于 2019-4-24 10:42
还有一个需求 如果需要判断当前行的某个状态  来控制当前行的select下拉框是否能够被编辑   这个要怎么办 ...

grid.on("cellbeginedit",function(e){
   if(e.field=="...."&&e.record.xxx....){
        e.cancel=true;
  }
})

Rank: 6Rank: 6

9#
发表于 2019-4-24 11:18:47 |只看该作者
felt 发表于 2019-4-24 10:58
grid.on("cellbeginedit",function(e){
   if(e.field=="...."&&e.record.xxx....){
        e.cancel=tr ...

我一直有一个很郁闷的问题  请版主大大分析一下
我的项目由于用了require.js,直接在模块文件的js里function onButtonEdit (e) {}之类的是没作用的,直接报错找不到方法了。后来我要么直接在html中建立一个script标签来声明(此时可以作用上去),要么采用jqurery的方式,使用$(xxx).on('click',function(){})去注册。虽然很怪但是一直相安无事。这时,注册onButtonEdit事件时,我用了juery中的时间委托,$('grid').on('buttonclick','.mini-buttonedit',function(){})这样注册,发现没有被触发,但是之前好像普通的按钮之类的注册这样click都可以。
后来我就在html中写script注册了,然后我发现,如果这样写
  1.    <script>

  2.         var selectWindow_wlzx_grid = mini.get('selectWindow_wlzx_grid')
  3.         function onButtonEdit (e) {
  4.             console.log(selectWindow_wlzx_grid)
  5.             selectWindow_wlzx_grid.show()
  6.         }
  7.     </script>
  8. </body>
复制代码
控制台报selectWindow_wlzx_grid .show()无法识别,然后我把var selectWindow_wlzx_grid = mini.get('selectWindow_wlzx_grid')放到了函数内 虽然不报错了,但这样肯定是不好的  我现在很烦,求版主大大帮助

Rank: 6Rank: 6

10#
发表于 2019-4-24 11:49:07 |只看该作者
if(e.field=="wlzxbm"){
            e.editor.un('buttonclick')
            e.editor.on('buttonclick',function(e){
                selectWindow_wlzx_grid.show()
            })
        }
我用这个方法ok了   请版主和我说下这里的un是在做什么嘛  

Archiver|普加软件

GMT+8, 2024-11-28 06:24 , Processed in 1.165630 second(s), 10 queries .

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部