2010-11-28 19 views
0

この例では:http://dev.sencha.com/deploy/dev/examples/grid/progress-bar-pager.htmlグリッドから行が削除された後に削除ボタンを配置したい場合、myDataからこのレコードを変更または削除するにはどうすればよいですか?ので、私はページを変更するか、またはリフレッシュボタンをクリックして私の行/行の削除が再び表示されるので。データを変更するソリューションはありますか?Extjs、削除ボタン

多くの感謝のような

答えて

4

何か:

var grid = ...; // Your grid. 

var button = new Ext.Button({ 
    text: 'Delete row', 
    handler: function() { 
     var record = grid.getSelectionModel().getSelected(); 

     if (record !== undefined) { 
      grid.store.remove(record); 
     } 
    } 
}); 

あなたはあなたのデータは実際のために削除することを希望する場合、グリッドは、実際のデータストアからデータを削除する負荷とリモートストアを使用する必要があります。以下は、ローカルの変更を意味します

proxy: new Ext.ux.data.PagingMemoryProxy(myData), 

あなたはそれを削除しようとすると、詳細はマニュアルを参照してください

url: 'http://localhost/path/to/get/data' 

を置くことができる:あなたがその例のソースに目を通す場合http://dev.sencha.com/deploy/dev/docs/?class=Ext.data.Store

+0

あなたのアイデアは良いですが、私は現金で働きたいと思いますし、製品を削除するたびにデータベースをリロードしたくありません。私はまた、私のデータベースから行を削除するが、私はデータベースを再読み込みしたくないという機能を持っています。あなたが10-20製品を持っていればOKですが、10.000を持っていれば... – cosy

+0

@cosy削除は再クエリーを引き起こすべきではありません(少なくとも、必要ではない)。削除が正常に行われたと仮定した場合、または削除が失敗した場合は削除されたレコードを復元すると、@ Kaiはうまくいくはずです。 – wombleton

+0

'Ext.Ajax.request()'を使ってAJAXリクエストを送るSaveボタンを置くことも、 'store.save()'を使ってAJAXリクエストを送ることもできます。ストアに 'autoSave'を' false'に設定すると、自動的に変更が保存されます。 – Tower

1

ハードコードされた配列からデータをロードしています。

Ext.onReady(function(){ 

     var myData = [ 
       ['3m Co',71.72,0.02,0.03,'9/1 12:00am'], 
       ['Alcoa Inc',29.01,0.42,1.47,'9/1 12:00am'], 
       ['Altria Group Inc',83.81,0.28,0.34,'9/1 12:00am'], 
       // ... 
       ['Verizon Communications',35.57,0.39,1.11,'9/1 12:00am'], 
       ['Wal-Mart Stores, Inc.',45.45,0.73,1.63,'9/1 12:00am'] 
     ]; 

myDataは、ページがロードされるたびにその静的な定義から再作成されるため、リフレッシュ間に変更が持続しないのはこのためです。

サーバ側のスクリプト(PHPスクリプトなど)を2つ作成する必要があります。削除されていないレコードのデータは、JSONまたはXML形式で出力されます。もう1つはデータベースからIDでレコードを削除します。

"getter" PHPスクリプトと技術製品に関するデータグリッドを表示するための対応するExt JSコードの作成を扱うチュートリアルです:http://www.devarticles.com/c/a/JavaScript/EXT-JS-Passing-Live-Data/。これは最初のスクリプト(データベースからデータを取得してJSON形式で出力するスクリプト)のみをカバーしますが、それはあなたを動かすはずです。 2番目のスクリプト(データベースからレコードをIDで削除するスクリプト)にAJAXリクエストを発行する関数を使用して、ストアのremoveコールバックをオーバーライドしてください。

0

これはソリューションmyData.splice(1,1)です。

関連する問題