2012-10-02 24 views

回答

1

我的優選的方法是重寫數據網格的

canEdit: function(inCell, inRowIndex)

方法。從這一點,你可以得到的項目:

this.getItem(inRowIndex)

然後制定出它是否應該爲可編輯與否,並返回真/假。

這確實會覆蓋列上的可編輯標誌,所以如果需要的話,您需要做一些事情。

0

這裏沒有API。我最近也有類似的要求,這裏是我如何實現它:

1)最初的列B是可編輯的,因爲我在網格的字段部分 2)使用onRowClick捕獲行的渲染。類似這樣的應該做的

dojo.connect(grid, "onRowClick", grid, function(evt){ 
    var idx = evt.rowIndex, 
    item = this.getItem(idx); 

    // get a value out of the item 
    msname = this.store.getValue(item, "msname"); 
    if(msname != null &U& (trim(msname) == trim(offsetName))) { 
    dojox.grid.cells._Base.prototype.format(idx, item); 
    } 
}); 

以下方法,然後不允許內聯編輯所需的列。我們將行索引和列索引傳遞給以下函數:

dojox.grid.cells._Base.prototype.format = function(inRowIndex, inItem){ 
    var f, i=grid.edit.info, d=this.get ? this.get(inRowIndex, inItem) : (this.value || this.defaultValue); 
    d = (d && d.replace && grid.escapeHTMLInData) ? d.replace(/&/g, '&amp;').replace(/</g, '&lt;') : d; 

       //Check inRowIndex and inItem to determine whether to be editable for this row here. 

    if(this.editable && (this.alwaysEditing || (i.rowIndex==inRowIndex && i.cell==this))){ 
    return this.formatEditing(d, inRowIndex); 
    }else{ 
    return this._defaultFormat(d, [d, inRowIndex, this]); 
    } 
} 

希望有所幫助。可能你可以添加一個jsfiddle,我們可以嘗試修復它。

+0

我會試一試,讓你知道結果。感謝您的快速幫助。 –

+0

你能解釋一下函數dojox.grid.cells._Base.prototype.format的功能嗎? 在這種情況下,這是什麼? – Mat0

相關問題