0

我在 extjs4 工作。我将网格视为带有代码的项目:

{
            margin : '10 0 5 100',
            xtype : 'grid',
            id : 'g3',
            //title : 'Educational Details',
             store:'qb.qbquestionoptionStore',
            columns : [ {
                text : 'questionId',
                dataIndex : 'questionId',
                flex : 1
            },

            {
                text : 'category',
                dataIndex : 'category',
                flex : 1
            }, {
                text : 'Answer',
                dataIndex : 'isAnswer',
                flex : 2.5
            },
            {
                header : 'Remove',
                renderer : function(val) {
                    return '<a href="#" id="remove">Remove</a>';
                },
            }

因此,在单击删除链接时,相应的条目将从数据库中删除。但网格仍然显示已删除的条目。在控制器中,我有它的代码 -

deleterow:function(cmp)
            {
                 cmp.mon(cmp.getEl(),'click',function(event,target)
                      {
                  if(target.id=='remove')
                  {  
                    // alert("hello");

                       listview=Ext.getCmp('g3');

                      listview.on({
                          itemClick: function(dv, record, item, index, e,opts)
                          {
                              liststore=this.getStore('qb.qbquestioncomplexityStore').sync();
                              liststore.load({
                                  params:{
                                      id:record.data.id,
                                      questionId:record.data.questionId

                                  }
                              });
                              console.log(record);
                              console.log(" Id is "+record.data.id);
                         var shopCart=Ext.create('Balaee.model.qb.qbquestioncomplexityModel', 
                                      {
                                  id:record.data.id,
                                  questionId:record.data.questionId
                                      });
                              Ext.Msg.confirm('Confirm to delete', 'Want to delete record?', function (button) 
                                      {
                                  if (button == 'yes')
                                  {
                                     shopCart.destroy();

                                  }
                                      }); }
                      });  }
             },this,{delegate:"a"});

            },

那么如何从网格中删除记录呢?

4

2 回答 2

2

要从中删除一行gridpanel,我会执行以下操作:

var selectedRecord = grid.getSelectionModel().getSelection()[0];
grid.getStore().each(function(rec) {
    if (rec == selectedRecord) {
        grid.store.remove(rec);
    }
});
grid.getView().refresh();
于 2013-06-28T01:57:19.097 回答
1

你的代码有点奇怪,但我认为你快到了:

最简单的方法是为模型设置代理。你只需要调用destroy()。此记录绑定到的任何商店都会收到通知。

if (button == 'yes'){
    record.destroy();
    shopCart.destroy();
}

如果不是我假设这个例子你的记录只绑定到一个商店,那么你可以这样做

if (button == 'yes'){
    var s = record.store;
    s.remove(record);
    s.store.sync();
    shopCart.destroy();
}
于 2013-06-20T09:22:28.380 回答