2014-02-24 56 views
2

我正在使用Kendo網格和主細節設置。詳細信息網格名爲DetailsGrid _#= Id#,以便它可以訪問父記錄的ID - 此部分工作正常。Kendo Grid MVC - 令人耳目一新的兒童/細節網格

我已經設置了詳細信息網格來更新支持數據的某些部分,並且需要能夠刷新$ ajax調用成功的詳細信息網格。我嘗試使用來選擇詳細信息網格:

var childGrid = $('#DetailsGrid_#=Id#').data("kendoGrid"); 
childGrid.refresh(); 

但是當我運行這段代碼,我得到一個jQuery錯誤說「未捕獲錯誤:語法錯誤,無法識別的表達:DetailsGrid _#=編號」

任何人都可以建議選擇細節網格的正確方法,或另一種調用刷新的方式?

更新:對查詢選擇器做了一些進一步的研究後,我發現我需要轉義= &#個字符。現在我已經修改了代碼如下這不會越過「無法識別的表達」的錯誤,但我現在得到了錯誤「無法調用未定義的方法‘刷新’」所以電網不被認可

var param = "DetailsGrid_#=Id#"; 
       var escapedParam = param.replace(/([ #;&,.+*~\':"!^$[\]()=>|\/@@])/g, '\\$1'); 
       //function escape(param) { 
       // return param.replace(/([ #;&,.+*~\':"!^$[\]()=>|\/@@])/g, '\\\\$1'); 
       //} 
       var childGrid = $('#' + escapedParam).data("kendoGrid"); 
       childGrid.refresh(); 
+0

你可以顯示'Id'的自定義模板嗎? –

+0

我只要在父網格上調用刷新,如果子網格在父網格被刷新後打開,則子網格將關閉。我想知道如何做到這一點,但一直沒有成功 – CSharper

回答

2

因爲,我不知道你如何指定網格的ID。

獲取要刷新的網格的標識。將其存儲在一個變量中。

var newId = Id;// Id is Grid Id 

var childGrid = $('#DetailsGrid_' + newId).data("kendoGrid"); 
childGrid.refresh(); 
+0

對不起,我的錯誤。我在原始代碼中有#號。我會更新問題 – user918064

+0

查看更新的答案。 –

+0

網格名稱不會改變,它總是#DetailsGrid _#= Id#。 _#= Id#是Kendo符號,它從父網格中提取Id – user918064

1

在此上下文中不能使用#=Id#。你必須找到Id並使用像Vivek Parekh說。 我有一個例子,它可以幫助你: 當你編輯的行,就可以得到ID通過$("#Id").val()這樣你就可以通過代碼得到電網:

var childGrid = $('#DetailsGrid_'+$("#Id").val()).data("kendoGrid"); 

記住,你只能使用$("#Id").val()當您編輯一排,這是編輯的行的ID

相關問題