我正在尝试从网格中下载文件。
但是现在你看不到第一栏
我正在尝试下载文件,例如样本原型小提琴。
示例原型 http://jsfiddle.net/khfL1jsh/
需要修复这个小提琴 http://jsfiddle.net/wL4v15vd/2/
template: function csvDownload() {
//return "testing" + that.FinancialDocuments.ImageType(model);
var htmlString = "<a id=\'sportsDataPlayer\' download=\'download.csv\' type=\'text\/csv\'>#= FileName.substring(FileName.lastIndexOf('/')+1) #</a>"
var csv = "a,b,c\n1,2,3\n";
var data = new Blob([csv]);
var a2 = document.getElementById("sportsDataPlayer");
alert("I am here");
a2.href = URL.createObjectURL(data);
},
答案 0 :(得分:0)
好的我觉得这最终是你需要的: http://jsfiddle.net/wL4v15vd/9/
columns: [{
field: "FileName",
title: "File Name",
template: function csvDownload(ev) {
//return "testing" + that.FinancialDocuments.ImageType(model);
var csv = "a,b,c\n1,2,3\n";
var data = new Blob([csv]);
var a = $('<a/>', {
class: 'sportsDataPlayer',
download: 'download.csv',
type: 'text/csv',
href: URL.createObjectURL(data),
html: ev.FileName
});
return a[0].outerHTML;
}
}, {
field: "ThreeDots",
title: "Last Name",
template: "<span class='deleteRow'>ThreeDots</span>"
}]
当然要解释一下,你遇到的第一个问题就是你有错误的括号,之后你使用了id - 在一个页面上同样的id是非常糟糕的做法(id需要是唯一的每个元素),你也在页面上呈现元素之前选择元素。为了解决这个问题,我动态添加了元素创建并存储在变量中 - 现在jquery正在创建元素并在其上分配对象 - 对象属性与在html元素上放置属性相同。要获取FileName,我们将参数传递给模板函数并从那里读取它。最后因为你为模板定义了函数,我们需要返回outerHTML,它实际上包含整个元素,例如:
<a class="sportsDataPlayer" download="download.csv" type="text/csv" href="blob:http://fiddle.jshell.net/8b53b8de-d0e1-40a5-b40f-0d9e3221915a">2 Download CSV (via btoa)</a>