Использование «более поздней» переменной в jQuery DataTables - PullRequest
2 голосов
/ 15 июня 2019

Моя конфигурация 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 уже отрисована. Можно ли каким-то образом добавить триггер, когда имя пользователя отображается для изменения содержимого ячейки изображения?

Я могу изменить значения для всех ячеек в столбце изображения после рендеринга всей таблицы, но мне почему-то не нравится эта идея, потому что она может выглядеть уродливо. Поэтому, пожалуйста, не предлагайте это.

1 Ответ

0 голосов
/ 15 июня 2019

Только что получил.Я могу получить доступ ко всем данным для текущей строки, используя параметр строки.

Так что это просто:

imgSrc = "/svg/" + row['UserName'][0].toUpperCase() + ".svg";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...