datatable заменяет переменную данными из-за пределов своей области - PullRequest
0 голосов
/ 21 октября 2011

Я использую datatables.net для отображения некоторых вложенных файлов, теперь я хочу добавить описание и ссылку для редактирования моего действия в контроллере, но его действие действительно странное.

У меня есть этот код

"aoColumnDefs": [{
    "fnRender": function (oObj) {
        var id = oObj.aData[0];
        var uploaded = oObj.aData[1];
        var dosseirId = oObj.aData[2];
        var contentLenght = oObj.aData[3];
        var filename = oObj.aData[4];
        var description = oObj.aData[5];
        var contentType = oObj.aData[6];

        var retVal = '<div>' + '<div>' + '<a href="' + GetAbsolutePath('Attachment/Download?id=' + id) + '">' + filename + '</a>' + '<a href="Delete" onclick="javascript:systematic_HTMLEditor.handleDelete(' + id + '); return false;"><img src="' + GetAbsolutePath('Content/remove-upload.png') + '" /> </a>' + '</div>' + '</div>';

        return retVal;
    },
    "aTargets": [0],
    "bSortable": true
}, {
    "bVisible": false,
    "aTargets": [1]
}, {
    "bVisible": false,
    "aTargets": [2]
}, {
    "bVisible": false,
    "aTargets": [3]
}, {
    "bVisible": false,
    "aTargets": [4]
},

{
    "fnRender": function (oObj) {
        var id = oObj.aData[0];
        var uploaded = oObj.aData[1];
        var dosseirId = oObj.aData[2];
        var contentLenght = oObj.aData[3];
        var filename = oObj.aData[4];
        var description = oObj.aData[5];
        var contentType = oObj.aData[6];

        var retVal = id;

        return retVal;
    },
    "aTargets": [6],
    "bSortable": true
}

Но это дает мне этот результат

Attachment Description Editlink

"attachment3.pdf" "i dag" "attachment3.pdf"

Таким образом, столбец 3 должен быть идентификатором вложения, но переведен в результат из aTargets [0], который является attachment3.pdf, затем я попытался переименовать множество переменных без какого-либо результата И если я изменю их, я не печатать идентификатор, но contentType или contentLength, тогда проблема не возникает, и отображаются правильные данные. Мне нужно опубликовать идентификатор, чтобы создать ссылку для редактирования

Это oObj.aDatas содержание в первой части

aData: Array[7]
0: 21
1: "12-10-2011 08:06:00"
2: 1
3: 81695
4: "attachment3.pdf"
5: "i dag"
6: "application/pdf"
length: 7

Здесь, во второй части, и как ID внезапно получает это значение из предыдущего кода, которого я действительно не получаю.

    aData: Array[7]
0: "<div><div><a href="/Attachment/Download?id=21">attachment3.pdf</a><a href="Delete" onclick="javascript:systematic_HTMLEditor.handleDelete(21); return false;"><img src="/Content/remove-upload.png" /> </a></div></div>"
1: "12-10-2011 08:06:00"
2: "1"
3: "81695"
4: "attachment3.pdf"
5: "i dag"
6: "application/pdf"
length: 7

1 Ответ

1 голос
/ 21 октября 2011

Я думаю, что здесь происходит то, что fnRender фактически меняет значение в aData.oObj.Вам нужно установить bUseRendered: false

"aoColumnDefs": [{
    "fnRender": function (oObj) {
        var id = oObj.aData[0];
        var uploaded = oObj.aData[1];
        var dosseirId = oObj.aData[2];
        var contentLenght = oObj.aData[3];
        var filename = oObj.aData[4];
        var description = oObj.aData[5];
        var contentType = oObj.aData[6];

        var retVal = '<div>' + '<div>' + '<a href="' + GetAbsolutePath('Attachment/Download?id=' + id) + '">' + filename + '</a>' + '<a href="Delete" onclick="javascript:systematic_HTMLEditor.handleDelete(' + id + '); return false;"><img src="' + GetAbsolutePath('Content/remove-upload.png') + '" /> </a>' + '</div>' + '</div>';

        return retVal;
    },
    "bUseRendered": false,
    "aTargets": [0],
    "bSortable": true
}, {
    "bVisible": false,
    "aTargets": [1]
}, {
    "bVisible": false,
    "aTargets": [2]
}, {
    "bVisible": false,
    "aTargets": [3]
}, {
    "bVisible": false,
    "aTargets": [4]
},

{
    "fnRender": function (oObj) {
        var id = oObj.aData[0];
        var uploaded = oObj.aData[1];
        var dosseirId = oObj.aData[2];
        var contentLenght = oObj.aData[3];
        var filename = oObj.aData[4];
        var description = oObj.aData[5];
        var contentType = oObj.aData[6];

        var retVal = id;

        return retVal;
    },
    "aTargets": [6],
    "bSortable": true
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...