2012-02-10 26 views
0

我在我的ASP.NET MVC項目中使用jqgrid。我試圖在gridComplete函數中綁定click事件。然後,我想檢測單元格是否可以編輯。到目前爲止,我有這樣的:gridqplete函數中的jqGrid綁定事件

gridComplete: function() { 
       var ids = jQuery("#resources").jqGrid('getDataIDs'); 
       for (var i = 0; i < ids.length; i++) { 
        var cl = ids[i]; 
        jQuery('#resources').jqGrid('editRow', cl); 
       } 
       $("#resources td").click(function(e) { 
        ...//here I want to check if clicked cell is editable 
       }); 

    } 

,你可以看到我加載網格後立即作出行準備編輯。這隻涉及屬性editable = true的列。

UPDATE:

的解決方案是非常簡單的:

$("#resources td").click(function(e) { 
        var sClassName = e.target.className; 
        if (sClassName == "editable") { 
         //editable cell is clicked 
        } 
    }); 

回答

0

我不完全理解你的要求。點擊「可編輯」或「不可編輯」單元格後,您想要執行哪些其他操作?

不過,我會建議您使用onCellSelect回叫處理程序,而不是將click事件綁定到網格的每個單元格。爲了理解每個綁定需要Web瀏覽器的一些資源。您可以只將一個綁定到單元格的任何父元素(如<table>元素(網格本身)),而不是將事件綁定到單元格。由於機制被稱爲event flow,事件傳播事件冒泡未處理的事件將被嘗試由父元素的相同事件處理程序或父母的父母等處理。事件處理程序接收Event object哪些target屬性有助於檢測哪個元素最初被點擊。

所以,你可以使用如下代碼

onCellSelect: function (rowid, iCol, cellcontent, e) { 
    var colModel = $(this).jqGrid('getGridParam', 'colModel'); 
    if ($.isArray(colModel) && !colModel[iCol].editable) { 
     // non-editable cell is clicked 
    } 
} 

或本

onCellSelect: function (rowid, iCol, cellcontent, e) { 
    if (!this.p.colModel[iCol].editable) { 
     // non-editable cell is clicked 
    } 
} 

檢測當前單擊的單元格是否是不可編輯的。

+0

我嘗試過使用onCellSelect事件,但它僅對非可編輯單元格觸發。我的要求是,我必須淡入或淡出我的頁面上的某些部分,具體取決於edeitable /不可編輯的單元格是否被點擊。 – maciek 2012-02-10 09:31:56

+0

@maciek:對不起,但我不明白你的意思。因爲我看到你以某種方式自己解決了問題,所以現在明確你的具體要求可能並不重要。 – Oleg 2012-02-10 14:09:59

相關問題