【问题标题】:How to delete record from grid on delete in extjs4如何在 extjs4 中删除时从网格中删除记录
【发布时间】:2013-06-20 08:53:24
【问题描述】:

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

            },

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

【问题讨论】:

    标签: grid extjs4 delete-record


    【解决方案1】:

    要从gridpanel 中删除一行,我会这样做:

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

    【讨论】:

      【解决方案2】:

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

      最简单的方法是为模型设置代理。您只需致电destroy()。该记录绑定到的所有店铺都会收到通知。

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

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

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

      【讨论】:

      • 感谢帮助...如果我使用“record.store.remove(record); record.store.sync(); shopCart.destroy();”它给了我错误作为未捕获的类型错误:无法调用 null 的方法“同步”
      • 感谢您的回复....我正在按照您建议的方式进行操作。但是现在它给了我错误-“未捕获的 Ext.data.proxy.Server.buildUrl():您正在使用 ServerProxy,但没有为它提供 url。”。我正在使用模型的代理。那么我需要做些什么改变
      • @user1722857 这很简单,使用我的第一个代码片段而不是第二个。第一个用于模型代理,第二个用于存储代理
      • 感谢回复..我包含代码为-"if (button == 'yes'){ record.destroy(); shopCart.destroy(); }" 但它仍然没有删除记录网格....
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-05-12
      • 1970-01-01
      • 1970-01-01
      • 2023-03-26
      • 2021-05-23
      • 1970-01-01
      • 2011-04-28
      相关资源
      最近更新 更多