2012-04-11 73 views
1

セルを編集モードにするのを何とか止めることができますか?beforeCellEditのイベントをキャッチしますか?beforeCellEditイベントを使用してjqGridが編集セルに入るのを防止しますか?

beforeEditCell: function (rowid, cellname, value, irow, icol) { 
    if (cellname != 'aSpecificCol') 
     return; 

    var grid = $("#grid"); 

    if (aCondition == "something") 
     grid.setColProp('aSpecificCol', { editable: false }); 
    else 
     grid.setColProp('aSpecificCol', { editable: true }); 
} 

イベントは発生しますが、列プロパティの設定は編集モードを変更していないようです。

+0

小説:あなたは3年以上の間、stackoverflowのメンバーであり、いくつかの質問または回答にはわずか55回投票しました。 ** 1日あたり約30の質問または回答**を投票する権利があります([ここ](http://meta.stackexchange.com/a/5213/147495)を参照)。主な目標または投票は、検索エンジンのヒントを提供しています。回答と質問は参考になります**。 「受け入れられた」回答は本当に問題を解決してはならないので、別の方法で計算されます。だから*もしstackoverflowの他のユーザーが役に立つ情報を見つけるのを助ける*あなたはあなたの投票権をもっと使うべきです。 – Oleg

答えて

6

beforeEditCellメソッドは、編集プロセスの途中で呼び出されます。新しい作成された入力要素または選択要素に初期化を行うことが主に存在します。

あなたはセル編集モードで編集からいくつかの細胞を防ぐ必要がある場合、私はあなたがどちらか時には前に、セル内の"not-editable-cell"クラスを設定することをお勧めCENまたはいくつかのセルのためのfalseを返すためにbeforeSelectRowを使用(cellattrまたはloadComplete中など)。 beforeSelectRow falseセルは編集されません。

beforeSelectRow: function (rowid, e) { 
    var $td = $(e.target).closest("td"), iCol = $.jgrid.getCellIndex($td[0]); 
    if (/* test some rules here */) { 
     return false; // prevent selection and so the editing of the cell 
    } 
} 
0

beforeEditCellは、セルを編集する前にもっと多くのコードを実行する手段しかないため、別の方法を見つける必要があります。 grid.celledit.jsから:

if ($.isFunction($t.p.beforeEditCell)) { 
    $t.p.beforeEditCell.call($t, $t.rows[iRow].id,nm,tmp,iRow,iCol); 
} 

しかし、あなたが編集モードを防ぐためにrestoreCellを呼び出すことができるべきであると思わ:

restoreCell

iRow、ICOL

が編集したを復元します行インデックスiRow(rowidと混在しない)のセルの内容iCol

例えば

:問題が解決しない場合は

beforeEditCell: function (rowid, cellname, value, irow, icol) { 
    var grid = $("#grid"); 
    if (cellname != 'aSpecificCol') { 
     grid.jqGrid("restoreCell", irow, icol); 
     return; 
    } 

、あなたはより適切な場所とすることができる、代わりにafterEditCellイベントにこのコードを追加してみてくださいすることができます。

+0

本当に良いアイデアですが、残念ながらbeforeEditCellとafterEditCellのどちらでもうまくいきませんでした。 – kaze

関連する問題