DGRID - 为字段中的多个字符提供数值

时间:2015-06-16 17:40:21

标签: javascript dojo dgrid

6.30.15 - 我如何使这个问题更好,更有益于其他人?反馈会有所帮助。谢谢!

我仍然是Dgrid,Dojo,Javascript的新手 - 真的全部。 在dgrid单元格中 - 有一个值'---------------- !!! - '或相同格式的变体。可能有1个感叹号或多个感叹号 - 并且有多种组合。

我需要 获取从左边开始的每个感叹号的计数。 例如 - 在上面的示例中 - 这些是项目2,3和4。我需要2,3和4才能在dgrid单元格中显示 - 而不是上面的字符串。

有没有人知道怎么做?我可以使用格式化程序 - 但是当我在字符串中有多个项目和不同的组合时,这变得很棘手。任何正确方向的建议或指导都会有所帮助。!

更新代码示例:6.16.15

只要只有一个感叹号,这个效果很好。这是多种组合。我正在快速学习javascript,所以问题的一部分是在研究答案时不确切知道如何提出正确的问题。

function XXXXInfoFormatter(item){
                //console.log(item,typeof(item));
                var newItem;
                if ( item == '--------------------' ) 
                    newItem = 'No Faults'
                else if ( item == '-------------------!' )
                    newItem = 'XXXX 1'
                else if ( item == '------------------!-' )
                    newItem = 'XXXX 2'
                else if ( item == '-----------------!--' )
                    newItem = 'XXXX 3'
                else if ( item == '----------------!---' )
                    newItem = 'XXXX 4'
                else if ( item == '---------------!----' )
                    newItem = 'XXXX 5'
                else if ( item == '--------------!-----' )
                    newItem = 'XXXX 6'
                else if ( item == '-------------!------' )
                    newItem = 'XXXX 7'
                else if ( item == '------------!-------' )
                    newItem = 'XXXX 8'
                else if ( item == '-----------!--------' )
                    newItem = 'XXXX 9'
                else if ( item == '----------!---------' )
                    newItem = 'XXXX 10'
                else if ( item == '---------!----------' )
                    newItem = 'XXXX 11'
                else if ( item == '--------!-----------' )
                    newItem = 'XXXX 12'
                else if ( item == '-------!------------' )
                    newItem = 'XXXX 13'
                else if ( item == '------!-------------' )
                    newItem = 'XXXX 14'
                else if ( item == '-----!--------------' )
                    newItem = 'XXXX 15'
                else if ( item == '----!---------------' )
                    newItem = 'XXXX 16'
                else if ( item == '---!----------------' )
                    newItem = 'XXXX 17'
                else if ( item == '--!-----------------' )
                    newItem = 'XXXX 18'
                else if ( item == '-!------------------' )
                    newItem = 'Head 19'
                else if ( item == '!-------------------' )
                    newItem = 'XXXX 20'
                else if ( item == '!!!!!!!!!!!!!!!!!!!!' )
                    newItem = 'All Fault'



         return newItem;

    }

1 个答案:

答案 0 :(得分:1)

改变。

function XXXXInfoFormatter(item) {
    var length = item.length;
    var i;
    var Wrongs = [];

    // Scan chars from right to left.
    for (i = length - 1; i >= 0; --i) {
        if ('!' === item[i]) {
            // If its a '!', put it id from Right to the Wrong list.
            Wrongs.push(length - i);
        }
    }
    // Check if the item is no faults or all faults.
    var wlength = Wrongs.length;
    if (wlength === 0) {
        return 'No Faults';
    } else if (wlength === length) {
        return 'All Faults';
    }

    // Form a Result str from wrong list.
    var str = 'XXXX in: ';

    for (i = 0; i < wlength; ++i) {
        str += ' ' + Wrongs[i] ;
    }
    return str;
}

希望这就是你所需要的。