How to delete record from grid on delete in extjs4

user1722857 picture user1722857 · Jun 20, 2013 · Viewed 7.4k times · Source

I am working in extjs4. I have view with grid as item with code:

{
            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>';
                },
            }

So on clicking on remove link,corresponding entry gets deleted from database. But grid is still showing that deleted entry. In controller I have code for it as-

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"});

            },

So how to delete record from grid?.

Answer

vvens picture vvens · Jun 28, 2013

to remove a row from gridpanel, i do something like this:

var selectedRecord = grid.getSelectionModel().getSelection()[0];
grid.getStore().each(function(rec) {
    if (rec == selectedRecord) {
        grid.store.remove(rec);
    }
});
grid.getView().refresh();