Angularjs -UI-grid celltooltip для динамических столбцов
У меня есть хранимая процедура, которая возвращает динамические столбцы, и я смог нарисовать выходные данные с некоторой помощью в angularJS ui-grid. Теперь я пытаюсь добавить "CellToolTip". На приведенном ниже снимке экрана показан вывод хранимой процедуры, в которой столбцы 25-22 являются динамическими (что означает, что они могут варьироваться от 150 до 0 в зависимости от входных данных, заданных хранимой процедуре). Столбцы, начинающиеся с "Tgt", являются целевыми объектами, которые я не хочу отображать, но показываю целевое значение при наведении курсора на столбец. Мне удалось успешно скрыть столбцы "Tgt-"на веб-странице без проблем.
Теперь мне нужно показать их в виде подсказки Celltool, когда я наведу курсор мыши на динамические столбцы 25-22, с которыми мне нужна помощь. В приведенном ниже примере скриншота, когда я навожу курсор мыши на ячейку со значением 0.901, которое находится против столбца 25 и строки "Vat Fill Calc F/P Ratio" attributename, я хотел бы видеть "0.89". Но если я наведу курсор мыши на значение ячейки 0.89, которое находится против столбца 25 и строки "Vat Batch data F/P" attributename, я хотел бы видеть "No value", так как столбец Tgt-25 имеет NULL для этого имени атрибута.
В моем коде ниже в функции push я добавил "var key = 'Tgt-' + sortedKeysArray[i]; var value = row.entity[key];". Когда я ставлю точки останова, я получаю ошибку, говоря, что ключ не определен. Но если я жестко закодирую ключевое значение типа "var value = row.entity["Tgt-25"];", то оно будет работать нормально. Мне нужна помощь в создании динамических значений наведения, в которых я хотел бы получить целевые значения из соответствующих целевых столбцов. Заранее спасибо за помощь.
https://i.stack.imgur.com/93J3C.jpg
Что я уже пробовал:
LRWService.getVatMakeRpt('1', '1221209', '100000028', '2020-05-08', '2020-05-08').success(function (data) { if (data === null || data.VatMakeRptList === null || data.VatMakeRptList.length === 0) { $scope.error = true; $scope.errorDescription = "No data found for selected criteria."; } else { $scope.gridOptionsVatMakeRpt.paginationPageSizes.push( data.VatMakeRptList.length ); var VatMakeRptList = data.VatMakeRptList; var keysArray = []; keysArray = Object.keys(VatMakeRptList[0]); var sortedKeysArray = keysArray.sort().reverse(); $scope.gridOptionsVatMakeRpt.columnDefs.push({ name: 'LineNumber', field: 'LineNumber', width: '20%', visible: true }); $scope.gridOptionsVatMakeRpt.columnDefs.push({ name: 'AttributeName', field: 'AttributeName', width: '20%', visible: true }); for (var i = 0; i < sortedKeysArray.length; i++) { if (!(sortedKeysArray[i] == "LineNumber" || sortedKeysArray[i] == "AttributeName" || sortedKeysArray[i].includes("Tgt-") == true )) $scope.gridOptionsVatMakeRpt.columnDefs.push({ name: sortedKeysArray[i], field: sortedKeysArray[i], width: '20%', visible: true, cellTooltip: function (row, col) { var key = 'Tgt-' + sortedKeysArray[i]; // var value = row.entity["Tgt-25"]; var value = row.entity[key]; if (value != null) { return value; } else { return "No Value"; } } }); } }