jQuery MiniUI

标题: datagrid列表中将某个可编辑列的值给另一个不可编辑的列 [打印本页]

作者: zhs0110    时间: 2016-7-19 15:18:06     标题: datagrid列表中将某个可编辑列的值给另一个不可编辑的列

[attach]7674[/attach]
如图:
暂存箱数表示一个总数,剩余箱数是一个不可编辑列(请注意),箱数是一个可编辑列。
思路是,箱数输入一个数字,编辑完后立马将暂存箱数减去箱数后的结果显示到剩余箱数。
我用了OnCellBeginEdit和OnCellCommitEdit,可以将相减后的结果给剩余箱数,但不管怎样都没法放它显示出来。
function OnCellCommitEdit(e) {
    var grid = e.sender; record = e.record; field = e.field, value = e.value;
    if (field == "DISPOSE_METHOD_ONE_QTY") { //箱数      
        grid.updateRow(record, { QQF2: "", QQF2_NAME: "" });
    }
}
function OnCellBeginEdit(e) {        
    var grid = e.sender, record = e.record, field = e.field, value = e.value, editor = e.editor;
    if (field == "QQF2") { //剩余箱数
        var qqf = record.QQF; //拿取暂存箱数
        var dmoq = record.DISPOSE_METHOD_ONE_QTY; //拿取箱数
        value = qqf-dmoq; //将暂存箱数减箱数的值给剩余箱数
        //e.cellHtml = ""+value; //这个并没有将值显示出来,不知道有啥办法呢?
        mini.alert(value);
    }
}



作者: zhs0110    时间: 2016-7-19 15:21:24

其实也就是说,剩余箱数的值是跟着箱数的值的变化而变化的,是动态的。
作者: felt    时间: 2016-7-19 15:44:36

zhs0110 发表于 2016-7-19 15:21
其实也就是说,剩余箱数的值是跟着箱数的值的变化而变化的,是动态的。

http://www.miniui.com/demo/#src=datagrid/drawcell2.html
参考示例,用ondrawcell事件处理
作者: zhs0110    时间: 2016-7-19 17:33:24

本帖最后由 zhs0110 于 2016-7-19 17:34 编辑
felt 发表于 2016-7-19 15:44
http://www.miniui.com/demo/#src=datagrid/drawcell2.html
参考示例,用ondrawcell事件处理

这个方法是可以的,但我这里出了个问题,datagrid列表加载时剩余箱数是默认有值的,现在加入这个ondrawcell后,加载出来的每一行的这个列的值变成NaN了。
[attach]7685[/attach]

作者: dforce    时间: 2016-7-20 09:25:02

zhs0110 发表于 2016-7-19 17:33
这个方法是可以的,但我这里出了个问题,datagrid列表加载时剩余箱数是默认有值的,现在加入这个ondrawcel ...

肯定是数据类型或者计算有问题了,请断点调试检查为什么会计算出NaN
作者: zhs0110    时间: 2016-7-20 09:59:26

本帖最后由 zhs0110 于 2016-7-20 10:03 编辑
dforce 发表于 2016-7-20 09:25
肯定是数据类型或者计算有问题了,请断点调试检查为什么会计算出NaN

是的,因为页面刚加载的时候箱数是空的,这时候加上ondrawcell的话,页面一加载就会用暂存箱数去减这个空,所以导致剩余箱数显示NaN。谢谢版主!
function onDrawCell(e) {
    var record = e.record;
    if(e.field=="QQF2"){ //剩余箱数
        var qqf = record.QQF; //暂存箱数
        var dmoq = record.DISPOSE_METHOD_ONE_QTY; //箱数
        if(dmoq!=null){ //主页加载时箱数是空的,假如没有这个判断,将导致剩余箱数显示NaN
            e.cellHtml = qqf-dmoq;
        }
    }
}

作者: zhs0110    时间: 2016-7-25 17:09:31

本帖最后由 zhs0110 于 2016-7-25 17:11 编辑
dforce 发表于 2016-7-20 09:25
肯定是数据类型或者计算有问题了,请断点调试检查为什么会计算出NaN

版主,我今天发现了一个问题,虽然按照上面你提示的那样能够进行计算并且显示到页面上,但我保存的时候拿到的并不是计算后的值,而是页面一开始加载时的值,请问文本和值要保持一致还需要加些什么东西呢。
作者: felt    时间: 2016-7-25 17:27:04

zhs0110 发表于 2016-7-25 17:09
版主,我今天发现了一个问题,虽然按照上面你提示的那样能够进行计算并且显示到页面上,但我保存的时候拿 ...

这只是绘制,并没有实际数据,如果你数据也需要更新那么,绘制的时候。e.record.QQF2=这个也要处理
作者: zhs0110    时间: 2016-7-25 17:38:09

felt 发表于 2016-7-25 17:27
这只是绘制,并没有实际数据,如果你数据也需要更新那么,绘制的时候。e.record.QQF2=这个也要处理 ...

您的意思是可以直接写成这样么:
e.cellHtml = qqf-dmoq;
e.record.QQF2 = qqf-dmoq;
我试了下,确实可以拿到改变后的值。




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