数据表用其范围之外的数据替换变量

发布于 2024-12-10 23:17:52 字数 2490 浏览 4 评论 0原文

我正在使用 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列应该是附件的ID,但被转换为aTargets [0]的结果,即attachment3.pdf,然后我尝试重命名很多变量而不使用任何变量结果并且如果我进行更改,那么我不会打印 id,而是打印 contentTypecontentLength 那么就没有问题并且会显示正确的数据。我需要发布 ID 来创建编辑链接

这是第一部分中的 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

I am using datatables.net to show some file attachments, now I want to add a description and a edit link to my action in a controller, but its acting really wierd.

I have this code

"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
}

But this gives me this result

Attachment Description Editlink

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

So the 3 column should be the ID of the attachment, but is translated to the result from aTargets[0] which is the attachment3.pdf, I then tried renaming a lot of variables without any result AND if I change so I dont print id, but contentType or contentLength then there is no issue and the correct data is shown. I need to post the ID to create an edit link

This is oObj.aDatas content in first part

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

Here, in the second part, and how ID suddenly gets this value from previous code I really don't get.

    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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

几度春秋 2024-12-17 23:17:52

我认为这里发生的事情是 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
}

I think what is happening here is fnRender actually changes the value in aData.oObj. What you need is to set 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
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文