2015-05-13 3 views
0

Например, у меня есть 5 элементов данных с элементами (простые строки). Существует ли способность реализовывать мультиселемент между этим dataView (все эти dataViews имеют разные хранилища данных)? Я имею в виду не-алгоритмическую реализацию ... Конечно, я могу написать некоторую логику для ее реализации, но, возможно, существует какое-то стандартное решение?Multiselection между dataviews ExtJS 4.2.2

+0

Что ваш вопрос? Может ли DataViews иметь многоэкранный режим? Если да, то да, они могут. Посмотрите на свойство 'itemSelector' в документации и добавьте' multiSelect: true' в ваше определение определения – 3rgo

+0

Hm, no ... Может ли ExtJS иметь множественный выбор между различными dataViews? Например, вы выбираете один элемент в dataView1, вы нажимаете «ctrl» и нажимаете на другой элемент в dataView2, в результате - 2 выбранных элемента в разных dataViews ... –

+0

Я не верю, что это возможно без специального кода , так как каждый dataview имеет свою собственную модель выбора. Хотя вы можете выбрать несколько элементов в каждом отдельном представлении, но они не будут связаны друг с другом (например, щелчок элемента в dataView2 без Ctrl не будет очищать выбор в других dataViews). Я попытаюсь приготовить вам что-то, чтобы заставить его работать :) – 3rgo

ответ

0

Вы можете попробовать что-то вроде этого, может быть, это может работать:

Ext.define('MyApp.controller.DataViews', { 
    extend : 'Ext.app.Controller', 

    init : function() { 
     this.views = {}; 
     this.listen({ 
      component: { 
       'dataview-1' : { 
        'render' : this.onDataViewRender, 
        'itemclick' : this.onItemClick 
       }, 
       'dataview-2' : { 
        'render' : this.onDataViewRender, 
        'itemclick' : this.onItemClick 
       } 
      } 
     }); 
    }, 

    onDataViewRender: function(view){ 
     this.views[view.getXType()] = view; 
    }, 

    onItemClick: function(view, record, items, index, e){ 
     //If Ctrl is not pressed when clicking an item, clear the selection of all views before proceeding 
     if(!e.ctrlKey) 
     { 
      Ext.Object.each(this.views, function(xtype, viewObj){ 
       viewObj.getSelectionModel().deselectAll(); 
      }); 
     } 
    } 
}); 

Ext.define('MyApp.view.DataView1', { 
    extend: 'Ext.view.View', 
    xtype: 'dataview-1', 
    multiSelect: true, 
}); 

Ext.define('MyApp.view.DataView2', { 
    extend: 'Ext.view.View', 
    xtype: 'dataview-2', 
    multiSelect: true, 
}); 
+0

Спасибо, я попробую –

Смежные вопросы