2015-07-30 2 views
0

Когда в моем поле есть пробел, например. firstname lastname, я не могу Sum. Также как я могу указать числовые значения в столбце [0]? Этот пример я нашел здесь: RowGrouping and Subtotal on DatatableDataTables Row Grouping Промежуточные итоги

https://jsfiddle.net/annoyingmouse/6c3wzwcd/

Я хочу

http://jsfiddle.net/alord84/ehup45xh/

"drawCallback": function (settings) { 
    var api = this.api(); 
    var rows = api.rows({ 
     page: 'current' 
    }).nodes(); 
    var last = null; 
    api.column(0, { 
     page: 'current' 
    }).data().each(function (group, i) { 
     if (last !== group) { 
      $(rows).eq(i).before(
      $("<tr></tr>", { 
       "class": "group", 
       "data-id": group 
      }).append($("<td></td>", { 
       "colspan": 5, 
       "class": "pocell", 
       "text": "PO # " + group 
      })).append($("<td></td>", { 
       "id": "e" + group, 
       "class": "noCount", 
       "text": "0.00" 
      })).append($("<td></td>", { 
       "id": "p" + group, 
       "class": "noCount", 
       "text": "0.00" 
      })).append($("<td></td>", { 
       "id": "b" + group, 
       "class": "noCount", 
       "text": "0.00" 
      })).prop('outerHTML')); 
      last = group; 
     } 
     val = api.row(api.row($(rows).eq(i)).index()).data(); 
     $("#e" + val.PO_Nbr).text(parseFloat($("#e" + val.PO_Nbr).text()) + parseFloat(val.Encum_Amt)); 
     $("#p" + val.PO_Nbr).text(parseFloat($("#p" + val.PO_Nbr).text()) + parseFloat(val.Paid)); 
     $("#b" + val.PO_Nbr).text(parseFloat($("#b" + val.PO_Nbr).text()) + parseFloat(val.Balance)); 
    }); 
}, 

ответ

1

Это потому, что часть кода, который создает итоговые использует идентификатор, и ваш ID имеет пространство и, таким образом, отрывается.

Это должно работать в вашей ситуации:

"drawCallback": function (settings) { 
    var api = this.api(); 
    var rows = api.rows({ 
     page: 'current' 
    }).nodes(); 
    var last = null; 
    api.column(0, { 
     page: 'current' 
    }).data().each(function (group, i) { 
     group = group.split(' ').join('_') 
     if (last !== group) { 
      $(rows).eq(i).before(
       $("<tr></tr>", { 
        "class": "group", 
        "data-id": group 
       }).append($("<td></td>", { 
        "colspan": 5, 
        "class": "pocell", 
        "text": "PO # " + group.split('_').join(' ') 
       })).append($("<td></td>", { 
        "id": "e" + group, 
        "class": "noCount", 
        "text": "0.00" 
       })).append($("<td></td>", { 
        "id": "p" + group, 
        "class": "noCount", 
        "text": "0.00" 
       })).append($("<td></td>", { 
        "id": "b" + group, 
        "class": "noCount", 
        "text": "0.00" 
       })).prop('outerHTML')); 
      last = group; 
     } 
     val = api.row(api.row($(rows).eq(i)).index()).data(); 
     console.log(val); 
     $("#e" + val.PO_Nbr.split(' ').join('_')).text(parseFloat($("#e" + val.PO_Nbr.split(' ').join('_')).text()) + parseFloat(val.Encum_Amt)); 
     $("#p" + val.PO_Nbr.split(' ').join('_')).text(parseFloat($("#p" + val.PO_Nbr.split(' ').join('_')).text()) + parseFloat(val.Paid)); 
     $("#b" + val.PO_Nbr.split(' ').join('_')).text(parseFloat($("#b" + val.PO_Nbr.split(' ').join('_')).text()) + parseFloat(val.Balance)); 
    }); 
} 

Если пробелы удаляются из идентификатора и сравнение производится на группе без пробелов, то он должен работать как you expect.

+0

Спасибо! Как насчет ситуации, когда -> getFormatter используется '' 'var val = function (a) { return typeof a === 'string'? i.replace (/ [\ $,]/g, '') * 1: typeof a === 'number'? a: 0; }; '' 'как удалить форматирование --------' '' var val = function (i) { return typeof i === 'string'? i.replace (/ [\ $,]/g, '') * 1: typeof i === 'number'? i: 0; }; '' ' – Alex

+0

В приведенном выше примере я заменяю пробелы символами подчеркивания. Это означает, что когда дело доходит до вывода имени, мы можем заменить символы подчеркивания пробелами, чтобы сделать его понятным для человека. На самом деле это не имеет значения. Я играл с идеей использования атрибута data, 'data-id', в строке в начальном примере, а затем искал ячейку с правильным классом, но думал об этом лучше. Возможно, это будет лучше для вашей ситуации? – annoyingmouse

Смежные вопросы