jQuery MiniUI

标题: 表格的drawcell事件绘制单元格 [打印本页]

作者: 朱杰兵    时间: 2014-5-4 13:19:17     标题: 表格的drawcell事件绘制单元格

       e.cellHtml = '<div id="azfx0007" class="mini-checkboxlist" repeatItems="3" repeatLayout="table"'+
                   ' textField="azfx0007" valueField="azfx0008" value="" '+
                       'url="zd03Action.findCiBusiProjectByAzfx0001.action?azfx0001=\''+record.azfx0001+'\'" >';
           这样无法触发url。帮忙看一下


作者: felt    时间: 2014-5-4 14:57:41

drawcelll只能用html原生控件
作者: 朱杰兵    时间: 2014-5-4 14:58:49

felt 发表于 2014-5-4 14:57
drawcelll只能用html原生控件

那我想在某一列里面放一个单选或者多选框怎么实现呢?
作者: felt    时间: 2014-5-4 15:23:48

朱杰兵 发表于 2014-5-4 14:58
那我想在某一列里面放一个单选或者多选框怎么实现呢?

绘制原生控件
作者: 朱杰兵    时间: 2014-5-4 22:10:39

felt 发表于 2014-5-4 15:23
绘制原生控件

我现在遇到了一个这样的问题,请帮忙看看。我在grid2.on("drawcell"的时候,用ajax把所有的多选框数据加载出来放在str里面,最后再 e.cellHtml = str;但是这样不能把str的标签加载出来,这是怎么回事呢?
grid2.on("drawcell", function (e) {
                    var record = e.record;
                    column = e.column;
                    if(column.name == 'azfx0001'){
                            var str = '';
                    $.ajax({
                          success: function (text) {
                                         var json = mini.decode(text);
                                         for(var i=0;i<json.length;i++){
                                                 str+='<input type="checkbox" id="azfx0007" name="azfx0007" value="'+json.azfx0007+'"/>'+json.azfx0008;
                                         }
                      });
                    ajax加载完成
              e.cellHtml = str;
作者: felt    时间: 2014-5-5 09:10:51

本帖最后由 felt 于 2014-5-5 09:12 编辑
朱杰兵 发表于 2014-5-4 22:10
我现在遇到了一个这样的问题,请帮忙看看。我在grid2.on("drawcell"的时候,用ajax把所有的多选框数据加 ...

ajax加一下ansyc:false 默认是异步的
不过最好还是一次把数据全加载出来,drawcell每绘制一个单元格跑一次ajax的话肯定会有性能问题的

作者: 朱杰兵    时间: 2014-5-5 09:27:11

felt 发表于 2014-5-5 09:10
ajax加一下ansyc:false 默认是异步的
不过最好还是一次把数据全加载出来,drawcell每绘制一个单元格跑一次 ...

加上ansyc:false; 依然无效。
作者: felt    时间: 2014-5-5 10:33:36

朱杰兵 发表于 2014-5-5 09:27
加上ansyc:false; 依然无效。

断点去调试下看看你的str拼接出来没
作者: 朱杰兵    时间: 2014-5-5 10:38:01

felt 发表于 2014-5-5 10:33
断点去调试下看看你的str拼接出来没

一次把数据都加载出来,不用每绘制一列就跑一次ajax了。现在可以了
作者: 朱杰兵    时间: 2014-5-5 10:44:09

felt 发表于 2014-5-5 10:33
断点去调试下看看你的str拼接出来没

但是依然有个问题存在,我在进入页面的时候用ajax把绘制需要的数据加载出来,然后在drawcell,但是有时候在drawcell的时候无法取到ajax加载到数据,是不是drawcell的执行要比ajax要早一些
作者: factory    时间: 2014-5-5 11:07:44

朱杰兵 发表于 2014-5-5 10:44
但是依然有个问题存在,我在进入页面的时候用ajax把绘制需要的数据加载出来,然后在drawcell,但是有时候 ...

你把ajax获取数据独立出来,写到监听事件的上面去,代码依次从上往下执行下去的
作者: 朱杰兵    时间: 2014-5-7 16:09:53

factory 发表于 2014-5-5 11:07
你把ajax获取数据独立出来,写到监听事件的上面去,代码依次从上往下执行下去的 ...

我把ajax获取的数据放到了一个全局变量数组里面,但是还是会出现有时能绘制出来,有时绘制不出来。这是为什么呢?
作者: 朱杰兵    时间: 2014-5-7 16:22:45

factory 发表于 2014-5-5 11:07
你把ajax获取数据独立出来,写到监听事件的上面去,代码依次从上往下执行下去的 ...

var project = new Array();
jQuery(function($){
                $.ajax({
                     url: "ha02Action.loadAiistBusinessEvent.action",
                 data: {},
                 type: "post",
                 success: function (text) {
                         project = text;
                 },
                error: function (jqXHR, textStatus, errorThrown) {
                        issave=false;//保存结束
                        window.location.href="<%=request.getContextPath()%>/exception/error.jsp";
                        //CloseWindow();
                }
            });
                });


grid2.on("drawcell", function (e) {
                    var record = e.record;
                    column = e.column;
                    if(column.name == 'azfx0001'){
                            var str = '<input type="text" value="" style="display:none;" id="azfx0001'+record.azfx0001+'" name="azfx0001"/>';
                            for(var i=0;i<project.length;i++){
                                    if(project.azfx0001 == record.azfx0001){
                                            str+='<input type="checkbox" id="azfx0007" onclick="readit('+project.azfx0001+')" name="azfx0007'+project.azfx0001+'" value="'+project.azfx0007+'"/>'+project.azfx0008;
                                    }
                            }
                   e.cellHtml = str;
                    }
            });
作者: factory    时间: 2014-5-7 17:34:06

朱杰兵 发表于 2014-5-7 16:22
var project = new Array();
jQuery(function($){
                $.ajax({

ajax没有同步造成的吧,默认是异步的

你给ajax加上ansyc:false,同步
异步的话,不会等你交互完成,代码就执行下去了




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