jQuery MiniUI

标题: datagrid如何修改cellhtml [打印本页]

作者: xhd92811    时间: 2017-2-21 17:02:57     标题: datagrid如何修改cellhtml

本帖最后由 xhd92811 于 2017-2-21 17:16 编辑

[attach]8859[/attach]
想要对有效无效,进行控制,单点一下在有效无效之间切换,参考例子,把有效无效放下<a></a>里面设置到e.cellhtml,求教如何才能实现功能


作者: dforce    时间: 2017-2-21 18:52:45

[attach]8860[/attach]
参考这个例子


作者: xhd92811    时间: 2017-2-22 10:08:02

dforce 发表于 2017-2-21 18:52
参考这个例子

感谢,不过尝试了下,能够改变前面的几个值,但是那个有效无效还是没变化
作者: xhd92811    时间: 2017-2-22 10:14:43

dforce 发表于 2017-2-21 18:52
参考这个例子

发现动态修改的是value值,但是cellhtml没有发生变化
作者: felt    时间: 2017-2-22 11:02:25

xhd92811 发表于 2017-2-22 10:14
发现动态修改的是value值,但是cellhtml没有发生变化

看我贴你的例子了吗,不是点击有效无效可以来回切换了?
你还需要做什么?
作者: xhd92811    时间: 2017-2-22 11:23:41

本帖最后由 xhd92811 于 2017-2-22 11:26 编辑
felt 发表于 2017-2-22 11:02
看我贴你的例子了吗,不是点击有效无效可以来回切换了?
你还需要做什么? ...

我看了你的列子,尝试以后我能改变是对应的field 的value 值,我是想有效无效按钮只有1个,点击有效,按钮变成无效,再次点击,无效变成有效,切换cellhtml 里面的超链接,不是说分别点击无效有效,改变当前某一个列的值 ----------------------------------就是动态的修改当前行的操作列的cellHtml值

作者: felt    时间: 2017-2-22 11:43:25

xhd92811 发表于 2017-2-22 11:23
我看了你的列子,尝试以后我能改变是对应的field 的value 值,我是想有效无效按钮只有1个,点击有效,按钮 ...

没有什么,就是类似的效果
我做的例子里面绘制了2个超链接,可以点击相互切换,你可以实现别的逻辑
作者: xhd92811    时间: 2017-2-22 12:14:09

felt 发表于 2017-2-22 11:43
没有什么,就是类似的效果
我做的例子里面绘制了2个超链接,可以点击相互切换,你可以实现别的逻辑 ...

关键不知道怎么通过updaterow 如何去更改cellhtml值啊..你的例子,我只看过代码,刚打开页面空白的

以下是我的部分代码,并不能实现有效无效的值改变,就类似miniui里面的下拉框的TEXT值和VALUE值,只能改变VALUE值,
我百度查到过displayField,但是不行

  grid.set({      
              url:'<%=request.getContextPath()%>/bpm/creditApproval/AjaxService.jsp?method=selectRoleUser',   
            columns: [
                { type: "checkcolumn" },
                { type: "indexcolumn",header:"序号" },
                { field: "ROLE_NAME", width: 120, headerAlign: "center", allowSort: false, header: "角色名称"},
                { field: "EMPNAME", width: 120, headerAlign: "center", allowSort: false, header: "用户姓名"},
                { field: "USERID", width: 120, headerAlign: "center", allowSort: false, header: "用户OA账号"},
                { field: "MANAGER",name:"action",width: 120, headerAlign: "center", allowSort: false, header: "操作"},
                { field: "STATUS",name:"status",width: 120, headerAlign: "center", allowSort: false, header: "是否有效"}
                  
            ]
        });
       grid.hideColumn("status");      
  }
    function Manager(row_uid){        
        var row = grid.getRowByUID(row_uid);
          console.log(row);   
          grid.updateRow(row, {MANAGER:222});   
}

grid.on("drawcell",function(e){                                                   
             var record = e.record,column = e.column,field = e.field,value = e.value,uid = record._uid;
             if (column.name == "action") {
                     e.cellHtml='<a href="javascript:Manager(\'' + uid + '\')">有效</a>&nbsp;'
                        + '<a href="javascript:Manager(\'' + uid + '\')">无效</a>';   
                    e.cellStyle = "text-align:center";                        
             }   
             console.log(e);        
        })   

作者: felt    时间: 2017-2-22 17:43:39

xhd92811 发表于 2017-2-22 12:14
关键不知道怎么通过updaterow 如何去更改cellhtml值啊..你的例子,我只看过代码,刚打开页面空白的

以 ...

只有在drawcell的时候有cellHtml这个概念,外部修改都是updateRow,updateRow会触发ondrawcell事件,对应的行会重绘。

你的代码里面这列已经是绘制成有效无效了,你updateRow,更新这个字段显示上是看不到效果的。
作者: xhd92811    时间: 2017-2-27 16:24:14

felt 发表于 2017-2-22 17:43
只有在drawcell的时候有cellHtml这个概念,外部修改都是updateRow,updateRow会触发ondrawcell事件,对应 ...

那有么有办法做到我要的那种效果
作者: dforce    时间: 2017-2-27 17:37:40

xhd92811 发表于 2017-2-27 16:24
那有么有办法做到我要的那种效果

请具体详细说明你的需求,如果只是有效无效切换可以参考2楼的例子。
作者: xhd92811    时间: 2017-2-28 09:26:26

dforce 发表于 2017-2-27 17:37
请具体详细说明你的需求,如果只是有效无效切换可以参考2楼的例子。

...............................我也是醉了,都说了2楼的代码无法实现
作者: xhd92811    时间: 2017-2-28 09:28:58

dforce 发表于 2017-2-27 17:37
请具体详细说明你的需求,如果只是有效无效切换可以参考2楼的例子。

你2楼的代码无非是API手册里面的例子,很早就看过
作者: dforce    时间: 2017-2-28 10:15:18

xhd92811 发表于 2017-2-28 09:28
你2楼的代码无非是API手册里面的例子,很早就看过

这例子就是切换的html,你到底需要做什么,请清楚描述,从你前面的代码和描述我看不出来你的需求和这例子有什么差别。
作者: xhd92811    时间: 2017-2-28 10:41:09

dforce 发表于 2017-2-28 10:15
这例子就是切换的html,你到底需要做什么,请清楚描述,从你前面的代码和描述我看不出来你的需求和这例子 ...

效果做到了,瞎拼乱凑...做了好几天..整个人都烦躁了,刚才烦的要狂暴了,因为这个e.column针对每个行有全部的列对象...搞死了,一直以为是只有1个列~~还有个问题是,在页面grid.load()后,我去drawcellgrid,第一次效果,不实现,再次点击才会实现~~这是为什么??

var rows =grid.data;
                var columns=grid.columns;
                         grid.on("drawcell",function(e){
                                  var record = e.record,column = e.column,field = e.field,value = e.value;
                                  for(var i=0;i<rows.length;i++){
                                          if (column.name == "action"&&rows.STATUS==0&&e.rowIndex==i) {
                                e.cellStyle = "text-align:center";
                                e.cellHtml = '<span>有效</span>&nbsp;'+'<a href="javascriptManager()">无效</a>';
                            }else if(column.name == "action"&&rows.STATUS=="1"&&e.rowIndex==i){
                                    e.cellStyle = "text-align:center";
                                e.cellHtml = '<a href="javascript:Manager()">有效</a>&nbsp;'+'<span">无效</span>';
                            }
                                  
                                  }
                                 
               
                        });       
作者: xhd92811    时间: 2017-2-28 10:49:54

dforce 发表于 2017-2-28 10:15
这例子就是切换的html,你到底需要做什么,请清楚描述,从你前面的代码和描述我看不出来你的需求和这例子 ...

我在grid.load()成功获取数据后,通过mini.get("datagrid").data 成功获取数据展现在页面2条数据,但第一次的查询结果通哟console.log() 看到日志显示为array[],再次点击查询按钮显示为array[obj,obj]~~~~想问下,这个问题出在哪里
作者: dforce    时间: 2017-2-28 13:34:14

xhd92811 发表于 2017-2-28 10:49
我在grid.load()成功获取数据后,通过mini.get("datagrid").data 成功获取数据展现在页面2条数据,但第一 ...

表格的加载是异步的,你在load后直接使用肯定还没有加载完毕
你这代码也有点冗余,不需要根据整体数据判断
grid.on("drawcell", function (e) {
        var record = e.record, column = e.column, field = e.field, value = e.value;
        if(column.name=="action"){
            if(record.STATUS==0){
             e.cellHtml = '<span>有效</span>&nbsp;' + '<a href="javascript:Manager()">无效</a>';
            }else if ( record.STATUS == 1) {
                e.cellHtml = '<a href="javascript:Manager()">有效</a>&nbsp;' + '<span">无效</span>';
            }
        }
    });  
作者: xhd92811    时间: 2017-2-28 13:58:57

dforce 发表于 2017-2-28 13:34
表格的加载是异步的,你在load后直接使用肯定还没有加载完毕
你这代码也有点冗余,不需要根据整体数据判 ...

恩,加了个延迟1秒显示,又加了个reload来实现无效有效的刷新,就是页面那一闪,感觉好变扭,之前没看过record是什么,非常感谢~~..Ps:代码冗余不要太多,完全是瞎搞瞎捉摸,深感太水=.=..
作者: dforce    时间: 2017-2-28 15:00:20

xhd92811 发表于 2017-2-28 13:58
恩,加了个延迟1秒显示,又加了个reload来实现无效有效的刷新,就是页面那一闪,感觉好变扭,之前没看过r ...

还是有点不清楚你这的逻辑,name=action这列你绘制了有效和无效,而你还要更新这列field的数据,再怎么更新都是看不到的,这列上看到的还是有效和无效。
作者: xhd92811    时间: 2017-2-28 15:17:56

本帖最后由 xhd92811 于 2017-2-28 15:19 编辑
dforce 发表于 2017-2-28 15:00
还是有点不清楚你这的逻辑,name=action这列你绘制了有效和无效,而你还要更新这列field的数据,再怎么更 ...

我这一列是没有数据的,是一个操作列,我单独弄了1个隐藏列去存Status(Ps:当时也不清楚,如果放一个列会如何,就直接这么干了)
比如 有效  无效   前面显示状态,后面为操作按钮  
后面加个超链接,触发事件进行改变    变成  无效  有效  (Ps:上头的要求...反正就这么干)
然后顺便想问下,jquery mini 能用 autocomplete 能进行用户输入值进行搜索和过滤么?

作者: dforce    时间: 2017-2-28 15:46:03

xhd92811 发表于 2017-2-28 15:17
我这一列是没有数据的,是一个操作列,我单独弄了1个隐藏列去存Status(Ps:当时也不清楚,如果放一个列会如何 ...

http://www.miniui.com/demo/#src=autocomplete/autocomplete.html
autocomplete就是按输入值去后台查询的。
作者: xhd92811    时间: 2017-2-28 16:03:13

本帖最后由 xhd92811 于 2017-2-28 16:07 编辑
dforce 发表于 2017-2-28 15:46
http://www.miniui.com/demo/#src=autocomplete/autocomplete.html
autocomplete就是按输入值去后台查询 ...

如何能获取到输入的模糊值 ,比如我输入"中",如何能获取到"中"....因为是table 布局 如下 input 放在td里面

<input id="roleManager.role" name="roleManager.role"  style="width:99.5%"  class="mini-autocomplete"         url="<%=request.getContextPath()%>/bpm/creditApproval/AjaxService.jsp?method=selectRole"/>  
该如何获取输入的文本=。=...getvalue,gettext 神马无能
Ps:话说以上可行么,没留意这个onvaluechanged...但是用keypress,keyup等也效果发愁
作者: dforce    时间: 2017-2-28 16:23:26

xhd92811 发表于 2017-2-28 16:03
如何能获取到输入的模糊值 ,比如我输入"中",如何能获取到"中"....因为是table 布局 如下 input 放在td里 ...

下载试用包,参考我们示例的后台,不需要你自己单独获取,我们内部自动已经传递了,你后台直接request["key"]
作者: xhd92811    时间: 2017-3-13 14:05:33

本帖最后由 xhd92811 于 2017-3-13 15:04 编辑
dforce 发表于 2017-2-28 16:23
下载试用包,参考我们示例的后台,不需要你自己单独获取,我们内部自动已经传递了,你后台直接request["k ...

找到了~~





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