2013-04-04 54 views
-2

我在我的網格中有一個嵌套的網格,它完美地工作,但客戶端不喜歡使用左側的箭頭並詢問爲了顯示子網格,添加一個按鈕。在Kendo UI Grid(MVC)中創建自定義命令來展開客戶端詳細信息模板

Kendo網站上的例子展示瞭如何自動打開第一行,我只是想用一種方式來擴展自定義控件中的網格,就像左側選擇器那樣。

我有自定義命令工作,它執行示例代碼,但我只需要一些幫助,使其爲當前行所需的JavaScript。

columns.Command(command => 
      { 
       command.Edit().Text("Edit").UpdateText("Save"); 
       command.Destroy().Text("Del"); 
       command.Custom("Manage Brands").Click("showBrandsForAgency"); 

而且隨着開放的第一行的標準例如JS:

function showBrandsForAgency(e) { 
    this.expandRow(this.tbody.find("tr.k-master-row").first()); 
} 

請給予我展開行所需的JS幫助點擊,而不是第一排?

*編輯* 修訂者阿塔納斯Korchev爲了得到它的工作只在按鍵,而不是整個行提供的解決方案。

我寧願使用該功能showBrandsForAgency不是自定義功能可按的解決辦法,但這樣做的工作:

$(document).ready(function() { 

    $("#grid").on("click", "a", function (e) { 
     var grid = $("#grid").data("kendoGrid"); 
     var row = $(this).parent().parent(); 

     if (row.find(".k-icon").hasClass("k-minus")) { 
      grid.collapseRow(row); 
     } else { 
      grid.expandRow(row); 
     } 
    }); 
}); 

回答

4

你可以嘗試這樣的事情:

$("#grid").on("click", "tr", function(e) { 
    var grid = $("#grid").data("kendoGrid"); 

    if ($(this).find(".k-icon").hasClass("k-minus")) { 
    grid.collapseRow(this); 
    } else { 
    grid.expandRow(this); 
    } 
}); 

當使用jQuery在函數上下文(可通過this關鍵字獲得)是觸發事件的DOM元素。在這種情況下,this是被點擊的表格行。

這裏有一個現場演示:http://jsbin.com/emufax/1/edit

+0

感謝您的答覆。我不得不修改一下,這不是最乾淨的解決方案,但它可以完成這項工作。 – superkew

+0

所需功能太複雜。看看我的答案是否需要簡潔高效的解決方案。 – Mike

-1

的結果相同只是簡單,更快速,更高效:

$("#grid").on("click", "tr", function() { 
    $(this).find("td.k-hierarchy-cell .k-icon").click(); 
}); 
相關問題