数据表用其范围之外的数据替换变量
我正在使用 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,而是打印 contentType
或 contentLength
那么就没有问题并且会显示正确的数据。我需要发布 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 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我认为这里发生的事情是 fnRender 实际上改变了 aData.oObj 中的值。您需要的是设置
bUseRendered: false
I think what is happening here is fnRender actually changes the value in
aData.oObj
. What you need is to setbUseRendered: false