2013-06-20 96 views
0

我在extjs4工作。我有與網格查看與項目代碼:如何刪除記錄從網格刪除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"}); 

      }, 

那麼如何從網格中刪除記錄?

回答

1

你的代碼是有點怪,但我認爲你幾乎有:

最簡單的方法是,當你設置了代理模式。你只需要撥打destroy()。任何商店此記錄必將被通知。

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

如果不是我想在這個例子中,你的記錄只綁定到一個商店,那麼你可以不喜歡它

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

thanx的幫助...如果我使用 「record.store.remove(記錄); record.store.sync(); shopCart.destroy();」它給我錯誤 - 未捕獲TypeError:無法調用空方法「同步」 – user1722857

+0

@ user1722857糟糕,我的錯。我編輯了我的答案。 – sra

+0

Thanx for reply ....我按照你所建議的方式。但是現在它給了我錯誤 - 「Uncaught Ext.data.proxy.Server.buildUrl():你正在使用一個ServerProxy,但沒有提供一個url。」我正在使用模型的代理。所以我需要做什麼變化 – user1722857

2

gridpanel刪除行,我做這樣的事情:

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