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

DGRID - give numeric value for multiple Characters in field

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;

    }

已更改。

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;
}

希望这是你需要的。