powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Буду тут про ExtJS спрашивать...
25 сообщений из 82, страница 2 из 4
Буду тут про ExtJS спрашивать...
    #38378548
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Типа того. Есть список, редактирую запись из него в псевдомодальном диалоге, отправляю обновляться на сервер, возвращается обновленная строка представления, которую нужно обновить в гриде.
Конфигурация store тут 14713441 .
...
Рейтинг: 0 / 0
Буду тут про ExtJS спрашивать...
    #38378580
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
On 27.08.2013 13:17, Antonariy wrote:
> возвращается обновленная строка представления
в выхлопе на request сохранения измененных данных id record'а совпадают?

_________________
"Helo, word!" - 17 errors 56 warnings
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Буду тут про ExtJS спрашивать...
    #38378605
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да.
...
Рейтинг: 0 / 0
Буду тут про ExtJS спрашивать...
    #38378696
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
On 27.08.2013 13:51, Antonariy wrote:
> Автор: Antonariy. Да.

/me думает: гм... А если просто { success: true } only вернуть?.. Там идет проверка: если возвращаются данные, то они должны нахлопываться... Можно даже на серванте значения "подправлять" и все update\'тся по-честному и с record\'а dirty снимается... BTW, я вот здесь когда-то дрозофилку при\'attach\'ивал - попробуй ее напильником/debugger\'ом...
_________________
"Helo, word!" - 17 errors 56 warnings
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Буду тут про ExtJS спрашивать...
    #38378903
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня другая архитектура.

Код: 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.
//---------модель 
Ext.define('Events', {
    extend: 'Ext.data.Model',
    fields: ['EventID', 'DateStr', 'Name', 'Price']
});

//---------хранилище
var myStore = Ext.create('Ext.data.Store', {
    model: 'Events',
    proxy: {
        type: 'memory',
        reader: {
            type: 'json',
            idProperty: 'EventID'
        }
    }
}); 

//---------загрузка данных в хранилище
ExtFK.Events.GetEvents(function (ret: tblEvents[]) {
    myStore.loadRawData(ret);
})

//---------грид
Ext.define('ExtInterface.EventsList', {
    extend:"Ext.grid.Panel",
    store: myStore,
    listeners: {
        itemdblclick: function (th, record, item, index, e, eOpts) {
            //---------открытие диалога для редактирования записи
            ExtFK.Events.GetEvent(record.raw.EventID, function (ret: formEvents) {
                var dlg = Ext.create('ExtInterface.dlgEvent', { dbID: ret.EventID });
                var form = Ext.getCmp("dlgEvent_form_" + ret.EventID).getForm();
                form.setValues(ret);
                dlg.show();
            });
        }
    }
})

//диалог
Ext.define('ExtInterface.dlgEvent', {
    extend: 'Ext.window.Window',
    xtype: 'dlgEvent',
    modal: true,
    initComponent: function () {
        this.items[0].id = this.xtype + "_form_" + this.dbID;
        this.callParent();
    },
    items: [{
        xtype: "form",
        buttons: [
            {
                text: "Сохранить",
                handler: function () {
                    var form = this.up('form').getForm(), th = this;
                    ExtFK.Events.UpdateEvent(form.getValues(), function (ret: tblEvents) {
                        if (ret.EventID > 0) {
                            th.up().up().up().close();
                            //---------здесь должно быть обновление строки грида, а не лоад
                            myStore.loadRawData([ret]);
                        }
                    });
                }
            },
            {
                text: "Отмена",
                handler: function () { this.up().up().up().close() }
            }
        ]
    }]
});
...
Рейтинг: 0 / 0
Буду тут про ExtJS спрашивать...
    #38380238
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Решил проблему так:
Код: 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.
Ext.define('FKInterface.Stores.IStore', {
    extend: 'Ext.data.Store',
    xtype: 'IStore',
    updateRow: function (data: any[]) {
        var idField: string = this.proxy.proxyConfig.reader.idProperty;
        if (idField) {
            if (data.length > 0) {
                if (data[0][idField] > 0) {
                    var rec = Ext.create(this.model.modelName, data[0])
                    this.data.replace(data[0][idField], rec);
                    return true;
                } else {
                    return false;
                }
            } else {
                return false;
            }
        } else {
            return false;
        }
    }
});

ExtFK.Events.UpdateEvent(obj, function (ret: cvEventsList[]) {
    if(myStore.updateRow(ret))th.up().up().up().close();
});

Но решил частично. Данные обновляются, но не перерисовываются, только после сортировки, например.
Как бы перерисовать одну строку?

Пробовал добавить
Код: javascript
1.
this.fireEvent('update', this, rec, Ext.data.Model.COMMIT, ["Name"]);

ноль реакции.
...
Рейтинг: 0 / 0
Буду тут про ExtJS спрашивать...
    #38380408
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наконец-то нашел время - давай по порядку:

> Смотрел этот пример, не понял, откуда форма знает, какой Store апдейтить.
Она update'тит не Store, а record ( Ext.form.Basic.updateRecord() )
Код: 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.
....
     setActiveRecord: function(record){
         this.activeRecord = record;
         if (record) {
             this.down('#save').enable();
            this.getForm().loadRecord(record);
         } else {
             this.down('#save').disable();
             this.getForm().reset();
         }
     },

     onSave: function(){
         var active = this.activeRecord,
             form = this.getForm();

         if (!active) {
             return;
         }
         if (form.isValid()) {
            form.updateRecord(active);
             this.onReset();
         }
     },
....
             listeners: {
                 selectionchange: function(selModel, selected) {
                     main.child('#form').setActiveRecord(selected[0] || null);
                 }
             }
....



> У меня другая архитектура.
Код: javascript
1.
2.
3.
       proxy: {
           type:'memory',
           }


А чё memory-то? Смотри... В выше приведенном примере Store ж - ajax'овый... В форму передается record, это record формой рихтуется, а Store уже сам заботится об отправке, обновлении и пр.

> Решил проблему так
См Ext.data.proxy.Ajax.processResponse() -> operation.commitRecords(result.records) -> Ext.data.Model.commit()

> Но решил частично. Данные обновляются, но не перерисовываются, только после сортировки, например.
> Как бы перерисовать одну строку?
>
>Пробовал добавить
Код: javascript
1.
this.fireEvent('update', this, rec, Ext.data.Model.COMMIT, ["Name"]);


> ноль реакции.
А если Ext.data.AbstractStore.afterCommit() дернуть? rec - честный/нормательный? На худой конец если event не пробулькивается дерните напрямую Ext.grid.View.onUpdate()

P.S. Но, если честно, то до таких ньюансов в std приложении опускаться не дОлжно... Может, все-таки, пересмотреть и замутить по человечески?..

_________________
"Helo, word!" - 17 errors 56 warnings
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Буду тут про ExtJS спрашивать...
    #38380468
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
За'check'айте autoSync и попробуйте рихтонуть запись посредством формы...
...
Рейтинг: 0 / 0
Буду тут про ExtJS спрашивать...
    #38380710
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ex_Softпопробуйте рихтонуть запись посредством формы...Отличная идея! :)
Раскурил исходник form.updateRecord, сделал как в нем и все заработало:

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
    updateRow: function (data: any[]) {
        if (data.length > 0) {
            var idField: string = this.proxy.proxyConfig.reader.idProperty;
            var idValue: number = data[0][idField]
            if (idValue > 0) {
                var rec = this.getAt(this.findExact(idField, idValue)); 
                rec.beginEdit();
                rec.set(data[0]);
                rec.endEdit();
                return true;
            } else {
                return false;
            }
        } else {
            return false;
        }
    }
...
Рейтинг: 0 / 0
Буду тут про ExtJS спрашивать...
    #38380733
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ex_SoftМожет, все-таки, пересмотреть и замутить по человечески?..Набор полей формы и грида отличается, а одноименные поля могут иметь разное представление. Просто передавать запись из сторе в форму бессмысленно, а писать рендеры для грида тупо и непродуктивно. Лучше отправить данные на сервер в формате формы, а вернуть в формате вьюшки, которая служит источником записей для грида.
...
Рейтинг: 0 / 0
Буду тут про ExtJS спрашивать...
    #38380776
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
offAntonariy/me думает: хазяїн знає, що кобилі робить...


_________________
"Helo, word!" - 17 errors 56 warnings
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Буду тут про ExtJS спрашивать...
    #38400156
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Делаю treegrid, на этот раз по-человечески.

Код: 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.
Ext.define('Catalogue.Model', {
    extend: 'Ext.data.Model',
    fields: ['CatalogueID', 'Code', 'Classificator', 'Name', 'ObjCount']
});

Ext.define('Catalogue.Store', {
    extend: 'Ext.data.TreeStore',
    model: 'Catalogue.Model',
    autoLoad: true,
    nodeParam: "ParentID",
    defaultRootId:1,
    proxy: {
        type: 'ajax',
        url: baseURL + 'GetChildren', 
        reader: {
            type: 'json',
            idProperty: "CatalogueID",
        }
    }
});

Ext.define('Catalogue.Tree', {
    extend: "Ext.tree.Panel",
    xtype:"mcTree",
    loadMask: true,
    rootVisible:false,
    store: Ext.create("Catalogue.Store"),
    columns: [
        {
            xtype: 'treecolumn',
            text: 'ID',
            width: 70,
            align:'right',
            dataIndex: 'CatalogueID',
        }, {
            text: 'Код',
            width: 100,
            align: 'center',
            dataIndex: 'Code'
        }, {
            text: 'Классификатор',
            width: 100,
            align: 'center',
            dataIndex: 'Classificator'
        }, {
            text: 'Наименование',
            align: 'left',
            flex:1,
            dataIndex: 'Name'
        }, {
            text: 'Кол-во объектов',
            align: 'center',
            dataIndex: 'ObjCount'
        }
    ]
});

aoutoLoad есть, defaultRootId есть, корень прячу. Чего дереву еще не хватает, что бы сделать запрос первой ветки при создании?
...
Рейтинг: 0 / 0
Буду тут про ExtJS спрашивать...
    #38402239
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гм... Скопировал прям из Вашего поста - ругнулось тока на:
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Ext.define('Catalogue.Store', {
      extend:'Ext.data.TreeStore',
      model:'Catalogue.Model',
      autoLoad:true,
      nodeParam:"ParentID",
      defaultRootId:1,
      proxy: {
          type:'ajax',
          url: baseURL +'GetChildren',
          reader: {
              type:'json',
              idProperty:"CatalogueID",
          }
      }
});


Убрал baseURL и запрос - пошел, как дети в школу... Надеюсь
Код: javascript
1.
2.
3.
4.
5.
Ext.onReady(function () {
....
     Ext.create("Catalogue.Tree");
....
});


имеет место?

ExtJS 4.2.1.883
_________________
"Helo, word!" - 17 errors 56 warnings
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Буду тут про ExtJS спрашивать...
    #38405710
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все в порядке, у меня путь был указан не полностью.
...
Рейтинг: 0 / 0
Буду тут про ExtJS спрашивать...
    #38406425
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще вопросы по дереву:
1) Можно ли сделать так, чтобы узлы при даблклике не разворачивались?
2) Можно ли указать, что у ветки нет потомков, чтобы узел не рисовался?
...
Рейтинг: 0 / 0
Буду тут про ExtJS спрашивать...
    #38406956
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> 1) Можно ли сделать так, чтобы узлы при даблклике не разворачивались?
тынць -> тынць -> тынць ???

> 2) Можно ли указать, что у ветки нет потомков, чтобы узел не рисовался?
http://docs.sencha.com/extjs/4.2.1/#!/api/Ext.data.NodeInterface-cfg-leaf
_________________
"Helo, word!" - 17 errors 56 warnings
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Буду тут про ExtJS спрашивать...
    #38406982
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо)
...
Рейтинг: 0 / 0
Буду тут про ExtJS спрашивать...
    #38419345
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ex_Soft> 1) Можно ли сделать так, чтобы узлы при даблклике не разворачивались?
тынць -> тынць -> тынць ???А как этот конфиг задать? Это не проканало:
Код: javascript
1.
2.
extend: "Ext.tree.Panel",
view: { toggleOnDblClick: false } 




И еще вопросы: добавляю ноду в дерево:
Код: javascript
1.
tree.store.getNodeById(parentId).appendChild(obj[0]);

Если родительская нода была с leaf=true, как ее сделать папкой?
Если родительская ветка была с leaf=false, но не развернута, то при разворачивании в ней отображаются только потомки, полученные с сервера, а добавленный нет. Почему?
...
Рейтинг: 0 / 0
Буду тут про ExtJS спрашивать...
    #38419602
Stupid_BOT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy,
Если родительская нода была с leaf=true, как ее сделать папкой?
parentNode.set('leaf', false);

Если родительская ветка была с leaf=false, но не развернута, то при разворачивании в ней отображаются только потомки, полученные с сервера, а добавленный нет.
А если родительская ветка была с leaf=false и развёрнута, - добавленный потомок отображается ?
...
Рейтинг: 0 / 0
Буду тут про ExtJS спрашивать...
    #38419611
Stupid_BOT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy,
> А как этот конфиг задать? Это не проканало:
>
> extend: "Ext.tree.Panel",
> view: { toggleOnDblClick: false }

Не в конфигурации. Переопределяешь у созданного экземпляра:
myTreePanel.view.toggleOnDblClick = false;
...
Рейтинг: 0 / 0
Буду тут про ExtJS спрашивать...
    #38419703
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stupid_BOTА если родительская ветка была с leaf=false и развёрнута, - добавленный потомок отображается ?Да.
...
Рейтинг: 0 / 0
Буду тут про ExtJS спрашивать...
    #38419832
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyStupid_BOTА если родительская ветка была с leaf=false и развёрнута, - добавленный потомок отображается ?Да.Все переврал.
Наоборот, при разворачивании отображается только новая ветка, а существующие с сервера не забираются. Но это не проблема, просто не буду добавлять, если ветка не развернута.
...
Рейтинг: 0 / 0
Буду тут про ExtJS спрашивать...
    #38420143
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ситуация такова: на форме есть поле, являющееся внешним ключом, но комбобокс для него не подходит, потому что данных во внешней таблице много, к тому же это дерево. То есть нужно в самом поле писать текст, где-то еще хранить id, а само значение выбирать из псевдомодального диалога, вызываемого с помощью кнопки рядом с полем.

Есть ли в ExtJS встроенные механизмы для разруливания такой ситуации?
...
Рейтинг: 0 / 0
Буду тут про ExtJS спрашивать...
    #38420964
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyEx_Soft> 1) Можно ли сделать так, чтобы узлы при даблклике не разворачивались?
тынць -> тынць -> тынць ???А как этот конфиг задать? Это не проканало:
Код: javascript
1.
2.
extend: "Ext.tree.Panel",
view: { toggleOnDblClick: false }



http://stackoverflow.com/questions/8238180/in-extjs-how-dont-expand-in-tree-on-double-click
Код: javascript
1.
2.
3.
4.
5.
....
viewConfig: {
          toggleOnDblClick: false
     },
....



_________________
"Helo, word!" - 17 errors 56 warnings
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Буду тут про ExtJS спрашивать...
    #38421802
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
    Ext.define('IForm', {
        extend:'Ext.form.Panel',
        buttons: [
            {
                text: 'Сохранить',
                style: "font-size:16pt;font-weight:bold"

            },
            {
                text: 'Отмена',
                style: { fontSize: "12pt" }
            }
        ]
    });

Результат применения стилей вызывает недоумение. Внутренности кнопки состоят из двух спанов:
Код: html
1.
2.
<span id="button-1069-btnInnerEl" class="x-btn-inner x-btn-inner-center" unselectable="on" style="line-height: 44px;">Сохранить</span>
<span id="button-1069-btnIconEl" class="x-btn-icon-el " style="" unselectable="on" role="img"></span>

Так вот стиль применяется ко второму, где никакого текста нет. Что я неправильно делаю?
...
Рейтинг: 0 / 0
25 сообщений из 82, страница 2 из 4
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Буду тут про ExtJS спрашивать...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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