jquery
  • asp.net-mvc
  • kendo-ui
  • kendo-grid
  • 2015-02-05 81 views 1 likes 
    1

    我有一个剑道格(testGrid)与下列:如何隐藏在剑道网/显示ClientTemplate列

    columns.Bound(p => p.Payee); 
    columns.Template(@<text></text>).ClientTemplate("#if(clrCode=='1') {#<a href='javascript:GetImage()' class='k-button k-grid-view' id='Image' title='View'>View</a>#}#").Title("Image"); 
    

    我能够隐藏通过这个片段/显示收款人柱:

    $("#testGrid").data("kendoGrid").showColumn("Payee"); 
    

    但是,这个代码在Image列的情况下不起作用。下面两种方法都没有工作。

    $("#testGrid").data("kendoGrid").showColumn("Image"); 
    $("#testGrid thead [id=Image] .k-link").hideColumn("Image"); 
    

    我将不胜感激关于如何使这项工作的任何输入。

    回答

    4

    您可以使用showColumnhideColumn方法,使用数字(列的索引,从零开始)或字符串(列的名称)。所以,在这种情况下,您可以显示/隐藏这样的Image列(假设你的格子只有两列):

    $("#testGrid").data("kendoGrid").showColumn(1); 
    $("#testGrid").data("kendoGrid").hideColumn(1); 
    
    +0

    谢谢!但为什么它不适用于列名? – Arcturus 2015-02-06 06:50:43

    +0

    因为没有与模板列关联的名称。他们应该为列添加一个名称属性,以便您可以为模板列设置名称。 – ataravati 2015-02-06 15:44:35

    +0

    感谢ataravati的澄清。 – Arcturus 2015-02-07 05:50:45

    0

    我能够到外地属性添加到图像列,并调用与显示/隐藏列。

    { field: "photo", title:" ", filterable: false, sortable: false, template: kendo.template($(".column-photo-employee").html()), width: 30, locked:true } 
    

    我使用一个按钮,下拉菜单,列出来切换显示或隐藏所有列名和图标,但这里是我的js代码:

    var grid = $(".grid").data("kendoGrid"); 
    var colid = ['photo','last','first','user_id','wms_id','ta_id','payroll_id','alt_id','facility','department','supervisor','shift','tg','ag','activity_id','activity_name','start','end']; 
    
    var prefix3h = 'sch3hide-'; 
    
    function createCallback(a){ 
        return function(){ 
         $('#' + prefix3h + colid[a]).toggleClass('fa-eye fa-eye-slash'); 
         for (var i = 0; i < grid.columns.length; i++) { 
          if (grid.columns[i].field === colid[a]) { 
           var col = grid.columns[i]; 
           if (col.hidden) { 
            grid.showColumn(col.field); 
           } else { 
            grid.hideColumn(col.field); 
           } 
          } 
         } 
        } 
    } 
    
    for(var a = 0; a < colid.length; a++) { 
        $('#' + prefix3h + colid[a]).click(createCallback(a)); 
    } 
    

    的“colid”变量是一个数组包含所有列的“名称” - 实际上是所有列的字段属性。 循环的下部是click事件。 createCallback函数隐藏并显示该列。我不得不在第二个循环中添加以解释列移动或锁定/解锁时的情况。

    我对锁定和解锁列做了同样的事情,但只是使用lockColumn或unlockColumn。

    作为一个非程序员,我花了一段时间才弄明白这一点。张贴希望它可以帮助某人。

    相关问题