私は Ext3.x を使用するのが初めてで、よくわかりません。次回簡単に参照できるよう、空き時間に記録しておきます。同僚の助けになれば幸いです。コードをいじるだけです!
rowUp : function() {//上移 var records = this.gridPanel.getSelectionModel().getSelections();//得到选中所有行 for(var i in records)//遍历所选的所有行 { var record = records[i];//每行的数据(记录此数据) var index = this.gridPanel.getStore().indexOf(record);//数据所在位置 if(0>=index) { return;//不可移动 } var data = record.data; var NewRecord = new Ext.data.Record({ //记录数据,remove&和insert方法是记录数组(我他妈不知道啥玩意) itemName:data.itemName, //这里面的参数取gridPanel列表中record的定义 itemIndex:data.itemIndex, maxScore:data.maxScore, minScore:data.minScore, itemType:data.itemType }); this.gridPanel.getStore().removeAt(index);//删除当前所选行数据 this.gridPanel.getStore().insert(index-1,NewRecord);//将记录数据插入到所删除数据位置的上一位置 this.gridPanel.getView().refresh(); this.gridPanel.getSelectionModel().selectRow(index-1,index-1); } }, rpwDown : function() {//下移 var records = this.gridPanel.getSelectionModel().getSelections();//得到选中所有行 var num = this.gridPanel.getStore().getCount(); for(var i in records)//遍历所选的所有行 { var record = records[i];//每行的数据(记录此数据) var index = this.gridPanel.getStore().indexOf(record);//数据所在位置 if(this.gridPanel.getStore().getCount()-1<=index||0>index) { return;//不可移动 } var data = record.data; var NewRecord = new Ext.data.Record({ itemName:data.itemName, itemIndex:data.itemIndex, maxScore:data.maxScore, minScore:data.minScore, itemType:data.itemType }); this.gridPanel.getStore().removeAt(index);//删除当前所选行数据 this.gridPanel.getStore().insert(index+1,NewRecord);//将记录数据插入到所删除数据位置的下一位置 this.gridPanel.getView().refresh();//刷新(不知道刷的啥) this.gridPanel.getSelectionModel().selectRow(index+1,index+1); } //this.gridPanel.getStore().reload(); },
イベント呼び出しを 2 つの関数にスローするだけです。問題なく動作しますが、バグもあります(使ってみるとわかりますが、今は解決方法がわかりません)。複数選択データを上下に移動しても問題ありません。
以上がExtjs3.x の GridPanel 行データを上下に移動するサンプル コードの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。