jQuery MiniUI

标题: 表格中新增行如何动态渲染下拉框 [打印本页]

作者: happylover1278    时间: 2019-4-23 14:57:35     标题: 表格中新增行如何动态渲染下拉框

本帖最后由 happylover1278 于 2019-4-23 14:59 编辑

[attach]12160[/attach]
如图所示,此行 为点击上方增加产生   这行其中的一个单元格,为ajax动态获取的下拉框数据。然而一开始  由于表格中没有数据  此时并获取不到这个下拉input框,后来我尝试在增加行后  用$('')方式获取  然后便利所有的jqury对象拿到最后一个  转成mini对象后赋值,也失败了  请问该怎么做

作者: felt    时间: 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);
   }
})
作者: happylover1278    时间: 2019-4-23 16:44:45

felt 发表于 2019-4-23 16:38
如果你这列的下拉数据是固定的,你可以把数据放到列里面

我试试   谢啦
作者: happylover1278    时间: 2019-4-23 17:57:16

felt 发表于 2019-4-23 16:38
如果你这列的下拉数据是固定的,你可以把数据放到列里面

[attach]12162[/attach]
不知道哪里有不良内容无法提交

作者: happylover1278    时间: 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)
作者: felt    时间: 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
弹出编辑参考这个示例
作者: happylover1278    时间: 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下拉框是否能够被编辑   这个要怎么办
作者: felt    时间: 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;
  }
})
作者: happylover1278    时间: 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')放到了函数内 虽然不报错了,但这样肯定是不好的  我现在很烦,求版主大大帮助


作者: happylover1278    时间: 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是在做什么嘛  
作者: felt    时间: 2019-4-24 13:55:54

happylover1278 发表于 2019-4-24 11:49
if(e.field=="wlzxbm"){
            e.editor.un('buttonclick')
            e.editor.on('buttonclick', ...

un是解绑事件,控件事件只能绑定在控件上,不支持jquery的方式绑定的。
mini.parse();
var grid=mini.get(id);
在js中执行,必须先mini.parse()保证页面上控件已经全部解析好。




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