jQuery MiniUI

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

什么我给单元格设置不上格式,代码附上 [复制链接]

Rank: 2

跳转到指定楼层
楼主
发表于 2014-1-20 14:55:34 |只看该作者 |倒序浏览
本帖最后由 lishuli_1990 于 2014-1-20 15:10 编辑

求助版本~~为什么我给单元格设置不上格式,代码附上:
  function onDrawCell(e) {
        $.ajax({
            url: '@Url.Action("IsClock")?now=' + Math.random(),
            type: "post",
            async: "false",
            success: function (data) {
                if (data) {
                    var record = e.record;
                    if (!record.IsTimeLock && record.StatusShow != "未交班") {
                        e.cellStyle = "color:Red";
                    }
                }
             },
             error: function (text) {
             }
         });


   e.cellStyle = "color:Red";这句话可以执行到,如果满足条件,但是就是单元格式没有设置 上

Rank: 2

沙发
发表于 2014-1-20 15:09:53 |只看该作者
设置单元格的语句,可以走到,就是显示不了~~

Rank: 8Rank: 8

板凳
发表于 2014-1-20 15:19:53 |只看该作者
lishuli_1990 发表于 2014-1-20 15:09
设置单元格的语句,可以走到,就是显示不了~~

不要这样做....你这样不觉得效率很有问题吗?

ondrawcell是每个单元格都会触发该事件. 你有20行5列就有100个单元格,你一个表格,就去跟后台交互100多次?

测试过了,没问题
我的测试代码:
if (field == "loginname" && record.age == "25") {
                e.cellStyle = "color:green";
            }

能正常显示为绿色

Rank: 2

地板
发表于 2014-1-20 15:41:30 |只看该作者
factory 发表于 2014-1-20 15:19
不要这样做....你这样不觉得效率很有问题吗?

ondrawcell是每个单元格都会触发该事件. 你有20行5列就有10 ...

恩这个确实性能不好,但是这个貌似真的放到ajax里设置不上,我去掉后又可以设置上了

Rank: 8Rank: 8

5#
发表于 2014-1-20 15:51:17 |只看该作者
lishuli_1990 发表于 2014-1-20 15:41
恩这个确实性能不好,但是这个貌似真的放到ajax里设置不上,我去掉后又可以设置上了 ...

这是因为你的ajax去后台交互,是需要时间开销的

然后你的ondrawcell的方法,执行下去,但是在你ajax交互完毕执行success的时候,该单元格的ondrawcell已经执行完毕了.

我非常不建议每个单元格都去后台跑一趟. 你可以把数据一次性从后台取出来,然后再前台对数据进行一个筛选匹配
或者你后台进行一个关联查询,把需要的值,也一并放到表格的行数据里面,当成一行数据的某个字段,一起返回回来,然后ondrawcell的时候 e.record.xxx就能判断到你这个值了.

反正要么在前台一并处理,要么在后台一并处理,不要跑前台,再跑后台,开销太大

Rank: 2

6#
发表于 2014-2-13 11:27:58 |只看该作者
factory 发表于 2014-1-20 15:51
这是因为你的ajax去后台交互,是需要时间开销的

然后你的ondrawcell的方法,执行下去,但是在你ajax交互完 ...

现在我设置上了,又出现一个新的问题,就是我一行记录成红色字体,但是我随意拖动某个单元格一次或多次后,颜色就发生改变了,又变成黑色,

Rank: 8Rank: 8

7#
发表于 2014-2-13 12:14:01 |只看该作者
lishuli_1990 发表于 2014-2-13 11:27
现在我设置上了,又出现一个新的问题,就是我一行记录成红色字体,但是我随意拖动某个单元格一次或多次后 ...

你是怎么设置的,相关的代码贴出来看看

Rank: 2

8#
发表于 2014-2-13 14:28:25 |只看该作者
felt 发表于 2014-2-13 12:14
你是怎么设置的,相关的代码贴出来看看

function onDrawCell(e) {
var record = e.record;
  if (record.PreShiftDate > record.EndTimeTemp && record.StatusShow != "未交班") {
                e.cellStyle = "color:Red";
            }
}
但是出现上述问题呢~~随意拖动单元格,他会自动恢复黑色的字

Rank: 8Rank: 8

9#
发表于 2014-2-13 14:43:39 |只看该作者
lishuli_1990 发表于 2014-2-13 14:28
function onDrawCell(e) {
var record = e.record;
  if (record.PreShiftDate > record.EndTimeTemp & ...

拖动单元格会触发重绘,但是你数据不变的话是不会不执行变红色的
把html页面打包上来看下好了,高级模式可以上传文件

Rank: 2

10#
发表于 2014-2-13 14:54:01 |只看该作者
felt 发表于 2014-2-13 14:43
拖动单元格会触发重绘,但是你数据不变的话是不会不执行变红色的
把html页面打包上来看下好了,高级模式 ...

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

Archiver|普加软件

GMT+8, 2025-7-13 21:20 , Processed in 1.020799 second(s), 10 queries .

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部