我试图在网格中显示第一列

时间:2017-09-19 23:54:56

标签: javascript jquery html angularjs kendo-ui

  • 我正在尝试从网格中下载文件。

    • 当我点击打开第一个窗口链接时,弹出窗口打开。
    • 在该弹出窗口中,您将看到一个包含两列的网格。
    • 但是现在你看不到第一栏

    • 我正在尝试下载文件,例如样本原型小提琴。

    • 你能告诉我如何修复它,提供我的代码

示例原型 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);
},

1 个答案:

答案 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>