View Full Version : grid編集時の制御
ak_ext
20 May 2009, 2:33 AM
サンプル
http://extjs.com/deploy/dev/examples/grid/edit-grid.html
で
priceカラムを編集すると、セルの左上に赤い三角が付きます。
このサンプルでは、そういう動きになってないのですが、
この時他のカラム(例えばavilable)がpriceに連動して
ある値に変わり、直接編集できる項目ではないのですが、
左上に編集した印である赤い三角を付けたいです。
storeをロードせずにこのような動作はできるでしょうか。
→storeをロードすると赤い三角が消えてしまいそうです・・
何卒宜しくお願いします。
Tommy1969
20 May 2009, 4:55 PM
Ext.data.Record の dirty フラグに連動して三角マークが表示されるので、
Store の update のハンドラーで…
update: function(st, rec, ope) {
val org = rec.get('avilable');
rec.set('avilable', ’dummy’);
rec.set('avilable', org);
}
とすれば、実現できそう。(未検証)
# 「storeをロードせずに」ってところがよく分かりませんが…。
ak_ext
20 May 2009, 5:59 PM
update: function(st, rec, ope) {
val org = rec.get('avilable');
rec.set('avilable', ’dummy’);
rec.set('avilable', org);
}
のrec.set('avilable', ’dummy’);
は仮の値をセットしているのでしょうか。
またpriceカラムの値をとってきて、
それをavilableカラムにセットしても、
画面上の表示gridの値は変わらないような・・
store.loadとかstore.reloadとかしてあげないと、
画面の表示は変わらないのではないでしょうか・・
ただ、それをすると三角が消えてしまいそうな。。
実現したいのは
priceは編集可、 avilableは編集不可
ただpriceを編集した後に連動してavilableの値が
変更されかつ、編集した印の三角をつけたいです。
Tommy1969
20 May 2009, 6:40 PM
> rec.set('avilable', ’dummy’);
> は仮の値をセットしているのでしょうか。
YES。同じ値では、"変更された" とは認識されませんので。
> またpriceカラムの値をとってきて、
> それをavilableカラムにセットしても、
すみません、最初、price を取ってくるように書いてましたが、間違えでした。
> それをavilableカラムにセットしても、
> 画面上の表示gridの値は変わらないような・・
> store.loadとかstore.reloadとかしてあげないと、
> 画面の表示は変わらないのではないでしょうか・・
store の値を set で変えるとどうなるか、試されました? ちゃんと変わりますよ。;)
load はストアの内容をリセットするすることになるので、dirty は消えます。
従って、三角マークも消えます。
…なお…。
私のサンプルソースを実行すると、無限ループになります。set で値を書き換えたことで、update イベントがもう一度発生するので。:-P
price カラムの change イベントなど、別のところでやれば、うまくゆくはず…。
ak_ext
20 May 2009, 11:03 PM
ありがとうございます。
Powered by vBulletin® Version 4.1.5 Copyright © 2012 vBulletin Solutions, Inc. All rights reserved.