如何在extjs4中删除删除网格中的记录

时间:2013-06-20 08:53:24

标签: grid extjs4 delete-record

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

            },

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

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

你的代码有点奇怪,但我认为你差点就在那里:

最简单的方法是为模型设置代理。您只需致电destroy()即可。将记录此记录所绑定的任何商店。

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

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

if (button == 'yes'){
    var s = record.store;
    s.remove(record);
    s.store.sync();
    shopCart.destroy();
}