Моя конфигурация DataTables выглядит примерно так:
(function ($) {
"use strict";
$(document).ready(function () {
$('#data-table-users').DataTable({
"processing": true,
"serverSide": true,
"filter": true,
"orderMulti": false,
"ajax": {
"url": "/Users/GetUsersData",
"type": "POST",
"datatype": "json"
},
"columnDefs":
[{
"targets": [0],
"visible": false,
"searchable": false
}],
"columns": [
.............................
{
"data": "Image",
"orderable": false,
"render": function (data, type, row, meta) {
var imgSrc;
if (data != null) {
imgSrc = '"data:image/jpeg;base64,' + atob(data) + '"';
}
else {
imgSrc = "/svg/" + "A" + ".svg";
}
return '<div><img class="small-img" src=' + imgSrc + '></div>';
}
},
{
"data": "UserName",
"render": function (data, type, row, meta) {
return '<div class="positioned"> <div class="editable" data-name="userName" contenteditable="true">'
+ data + '</div > <i class="fa fa-pencil pushright" aria-hidden="true"></i> </div>';
}
},
{
"data": "FirstName",
"render": function (data, type, row, meta) {
if (data == null)
data = "";
return '<div class="positioned"> <div class="editable" data-name="userName" contenteditable="true">'
+ data + '</div > <i class="fa fa-pencil pushright" aria-hidden="true"></i> </div>';
}
},
............................
],
"order": [[8, "desc"]]
});
});
})(jQuery);
Для столбца изображения у меня в функции Render:
else {
imgSrc = "/svg/" + "A" + ".svg";
}
Я хотел бы вместо того, чтобы иметь imgSrc = "/svg/A.svg", построить его на основе столбца UserName следующим образом:
imgSrc = "/svg/" + userName[0].toUpperCase() + ".svg";
Как это сделать без изменения кода на стороне сервера? Мне кажется, что DataTables отрисовывает ячейку UserName позже, поэтому ячейка Image уже отрисована. Можно ли каким-то образом добавить триггер, когда имя пользователя отображается для изменения содержимого ячейки изображения?
Я могу изменить значения для всех ячеек в столбце изображения после рендеринга всей таблицы, но мне почему-то не нравится эта идея, потому что она может выглядеть уродливо. Поэтому, пожалуйста, не предлагайте это.