powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / ExtJS - Отображение данных
2 сообщений из 2, страница 1 из 1
ExtJS - Отображение данных
    #38872853
Rollie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем добрый день.
Сделал парсер, который выдает data.js вида:
Код: javascript
1.
var data=[{"head":["№","INN","Legal_Form_Desc","Customer_Full_Nm","Source_System_Desc"],"rows":[[1,"2302042152","ООО","АМПЗ БАКАР","БИСКвит: Краснодар",""],[2,"593300087432","ИП","БАЙДИНА ОЛЬГА ПАВЛОВНА","БИСКвит: Самара",""]]}];


После этого создал html, в который подключил index.js с содержанием:
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
Ext.onReady(function(){
    var search_input = document.createElement('input');
    search_input.setAttribute('id', 'search-input');
    document.body.appendChild(search_input);
    
    var body_element = Ext.get(document.body);
    var body_content_width = body_element.getWidth(true);
    var left_padding = parseInt(body_element.getStyle('padding-left'));
    if (left_padding){
        body_content_width = body_content_width - left_padding;
    }
    
    var test = document.createElement('span');
    test.setAttribute('style', 'padding:0;margin:0;position:absolute;');
    document.body.appendChild(test);
    var column_width = [];
    for(var table_counter = 0; table_counter < data.length; table_counter++){
        column_width.push([50, 180]);
        var head = data[table_counter]['head'];
        for(var i = 2; i < head.length; i++){
            test.innerHTML = head[i];
            column_width[table_counter].push(test.offsetWidth);
        }
    }
    document.body.removeChild(test);
    
    var grid_stores = [];
    for(var table_counter = 0; table_counter < data.length; table_counter++){
        var grid_container = document.createElement('div');
        grid_container.setAttribute('id', 'grid-' + table_counter);
        document.body.appendChild(grid_container);
        
        var head = data[table_counter]['head'];
        var rows = data[table_counter]['rows'];
    
        var reader_mapping = [{name: 'number'}];
        var grid_columns = [{
                                id: 'number', 
                                header: head[0], 
                                sortable: true, 
                                dataIndex: 'number', 
                                width: column_width[table_counter][0]
                            }];
        for(var i = 1; i < head.length; i++){
            if (head[i].length > 0){
                reader_mapping.push({name: head[i], mapping: i});
                grid_columns.push({
                                    header: head[i], 
                                    sortable: true, 
                                    dataIndex: head[i], 
                                    align: (i > 1) ? 'center' : undefined,
                                    width: column_width[table_counter][i] 
                                  });
            }
        }
        
        reader_mapping.push({name: 'group'});
        grid_columns.push({header: "group", sortable: true, dataIndex: 'group', hidden: true});
        
        var reader = new Ext.data.ArrayReader({}, reader_mapping);
        
        var grid = new Ext.grid.GridPanel({
            store: new Ext.data.GroupingStore({
                reader: reader,
                data: rows,
                sortInfo: {field: 'number', direction: "ASC"},
                groupField: 'group'
            }),
    
            columns: grid_columns,
    
            view: new Ext.grid.GroupingView({
                groupTextTpl: '{text} ({[values.rs.length]} {["чел."]})'
            }),
            
            frame: false,
            enableHdMenu: false,
            width: body_content_width,
            height: 600,
            collapsible: true,
            animCollapse: false,
            title: 'Таблица ' + (table_counter + 1),
            renderTo: grid_container
        });
        grid_stores.push(grid.store);
    }
    
    function escape(str) {
        var specials = new RegExp("[.*+?|()\\[\\]{}\\\\]", "g"); // .*+?|()[]{}\
        return str.replace(specials, "\\$&");
    }
    
    var SearchField = Ext.extend(Ext.form.TwinTriggerField, {
        initComponent: function(){
            SearchField.superclass.initComponent.call(this);
            this.on('specialkey', function(f, e){
                if(e.getKey() == e.ENTER){
                    this.onTrigger2Click();
                }
            }, this);
        },
        validationEvent: false,
        validateOnBlur: false,
        trigger1Class: 'x-form-clear-trigger',
        trigger2Class: 'x-form-search-trigger',
        hideTrigger1: true,
        width: 320,
        hasSearch: false,
        stores: [],
        
        onTrigger1Click: function(){
            if(this.hasSearch){
                this.el.dom.value = '';
                
                for(var i = 0; i < this.stores.length; i++){
                    this.stores[i].clearFilter();
                }
                
                this.triggers[0].hide();
                this.hasSearch = false;
            }
        },
    
        onTrigger2Click: function(){
            var v = escape(this.getRawValue());
            if(v.length < 1){
                this.onTrigger1Click();
                return;
            }
            for(var i = 0; i < this.stores.length; i++){
                this.stores[i].filter(this.stores[i].fields.keys[1], v, true, false);
            }
            
            this.hasSearch = true;
            this.triggers[0].show();
        }
    });
    var search_field = new SearchField({stores: grid_stores, applyTo: search_input});
});


В итоге теперь при загрузке страницы у меня отображается весь список из двух строк.

1. Как сделать так, чтобы при загрузке страницы не отображались данные таблицы, а при поиске модуль работал также, как и раньше, то есть отображал данные поиска?

Нужно это для того, чтобы не светить всеми данными при загрузке страницы.
...
Рейтинг: 0 / 0
ExtJS - Отображение данных
    #38877784
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А Вы можете, так сказать, на естественном языке сформулировать задлянафига такая гора кода? Что Вас в "штатной комплектации" не удовлетворило-то?
_________________
"Helo, word!" - 17 errors 56 warnings
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / ExtJS - Отображение данных
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]