2012-04-11 2 views
0

패널에 여러 개의 격자가 있습니다. 기본 모눈에는 데이터가 있으며 서로 끌어서 놓을 수 있습니다. 패널의 모든 그리드는 서로 끌어서 놓을 수 있어야합니다. 이 기능은 Chrome에서는 완벽하게 작동하지만 Firefox, IE 또는 Safari에서는 작동하지 않습니다.IE, FF 및 Safari에서 Extjs4 끌어서 놓기 영역 오류가 발생했습니다.

IE, FF 및 Safari에서는 데이터가 포함 된 표가 서로간에 드래그 앤 드롭됩니다. 그들은 빈 그리드 사이에 있지 않습니다. 빈 그리드에 데이터를 추가하려고 시도했지만 문제가 아닙니다. Firebug는 Extj와 함께 사용할 때 오류가 발생하므로 다른 버그 도구를 사용하면 버그가 발생합니다. 그 브라우저를 모두 다시 설치했는데 그 중 하나도 대답이 아닙니다. 내 끌어서 놓기 그룹에 대한 크롬의 viewconfig을 발견

편집 임 붙어은 ... 설정되어 있지만 다른 브라우저

이이 데이터 내 기본 눈금에 설정 나던.

var rround = "panel-game-"+round; 
    var ss = Ext.create('Ext.grid.Panel', { 
     stateful: true, 
     id: "panel-game-"+round, 
     stateId: 'stateGrid', 
     autoScroll: false, 
     store: store, 
     columns: [ 
      { 
       text  : 'Teams', 
       flex  : 1, 
       sortable : true, 
       dataIndex: 'team_name' 
      } 
     ], 
     height: 100, 
     width: 150,                    
     title: 'Game ' + round,             
     viewConfig: { 
      stripeRows: true, 
      plugins: { 
       ptype: 'gridviewdragdrop', 
       dragGroup: [groups], 
       dropGroup: [groups] 
      }, 
      listeners: { 
       drop: function(node, data, dropRec, dropPosition,record,store) { 
        var dropOn = dropRec ? ' ' + dropPosition + ' ' + dropRec.get('name') : ' on empty view'; 
        var data = this.store.data.items; 
        var sdata = new Array(); 
        data.each(function(e){ 
         var bleh = {team_id: e.data.team_id, team_name:e.data.team_name}; 
         sdata.push(bleh); 
        })                      


        removeDupe(sdata,this.store); 
       } 
      } 
     } 
    }); 

이것은 드랍을 허용해야하는 빈 그리드이며 데이터가있을 때 드래그해야합니다.

var rCell = Ext.create('Ext.grid.Panel', { 
    stateful: true, 
    id: "panel-game-"+i+'-'+a, 
    stateId: 'stateGrid', 
    autoScroll: false, 
    store: rCellStore, 
    columns: [ 
     { 
      text  : 'Teams', 
      flex  : 1, 
      sortable : true, 
      dataIndex: 'team_name' 
     } 
    ], 
    viewConfig: { 
     plugins: { 
      ptype: 'gridviewdragdrop', 
      dragGroup: [groups], 
      dropGroup: [groups] 
     }, 
     listeners: { 
      beforedrop: function(node,data,overModel,dropPosition,eOpts){ 
       console.log(node); 
      }, 
      drop: function(node, data, dropRec, dropPosition, record) { 
       console.log("drop"); 
       var dropOn = dropRec ? ' ' + dropPosition + ' ' + dropRec.get('title') : ' on empty view'; 
       var f = node.id.replace('-body',''); 
       var newval = data.records[0].data; 

       if(f != undefined && f != ''){ 
        var fstore = Ext.getCmp(f).getStore(); 
        fstore.add(newval); 
       } 

       var data = this.store.data.items; 
       var sdata = new Array(); 
       data.each(function(e){ 
        var bleh = {team_id: e.data.team_id, team_name:e.data.team_name}; 
        sdata.push(bleh); 
       })                      


       removeDupe(sdata,this.store); 


      } 
     } 
    }, 
    height: 100, 
    width: 150,                    
    title: 'Game ',             
    viewConfig: { 
     stripeRows: true 
    } 
}); 

뭔가를 드래그하려고 할 때 드롭 존을 사용할 수 없습니다. 그것일지도 모르지만 그것을 고치는 법을 모르겠다.

답변

0

문제는 두 번째 viewConfig {stripeRows : true}입니다. 크롬은 그것을 알아낼 수 있었지만 다른 브라우저는 첫 번째 viewConfig를 두 번째 것으로 덮어 쓰고있었습니다.