Здравствуйте всем! Задача такая имея грид при клике по expander делать ajax запрос и вставлять данные в rowBodyTpl
вопрос таков: как обратится к потомку row и записать текст в rowBodyTpl
Буду благодарен за любую помощь
привожу код
| Код | var grid = Ext.define('UsersList', { extend: 'Ext.grid.Panel', alias: 'widget.userslist', title: 'Пользователи', store: 'UserStore',
initComponent: function () { this.columns = [ {header: 'Имя', dataIndex: 'name', flex: 1}, {header: 'Фамилия', dataIndex: 'surname', flex: 1}, {header: 'Логин', dataIndex: 'login', flex: 1}, {header: 'Статус', dataIndex: 'status', flex: 1}, {header: 'Дата регистрации', dataIndex: 'created_at', flex: 1} ];
this.callParent(arguments); },
plugins: [ { ptype: 'rowexpander', pluginId: 'rowexpander', selectRowOnExpand: true, rowBodyTpl: [ '<div id="user-{id}" ></div>' ],
toggleRow: function (rowIdx) { var rowNode = this.view.getNode(rowIdx), record = this.view.getRecord(rowNode), userId = record.get('id'), targetId = 'user-' + userId,
row = Ext.get(rowNode), nextBd = Ext.get(row).down(this.rowBodyTrSelector), hiddenCls = this.rowBodyHiddenCls,
grid = this.getCmp();
if (row.hasCls(this.rowCollapsedCls)) { row.removeCls(this.rowCollapsedCls); this.recordsExpanded[record.internalId] = true; this.view.fireEvent('expandbody', rowNode, record, nextBd.dom);
Ext.Ajax.request({ url: '/users/comment', params: {id: userId}, success: function (response) { var data = Ext.decode(response.responseText); if (data.success) { nextBd.removeCls(hiddenCls);
ВОТ ТУТ НАДО ОБРАТИТЬСЯ К rowBodyTpl и подставить в него значение data.comment;
grid.suspendEvents(); } else { Ext.Msg.alert('Комментарий', 'Не удалось получить комментарий для пользователя'); } } });
if (rowNode.grid) {
} else {
}
} else { row.addCls(this.rowCollapsedCls); nextBd.addCls(this.rowBodyHiddenCls); this.recordsExpanded[record.internalId] = false; this.view.fireEvent('collapsebody', rowNode, record, nextBd.dom); } } } ] });
|
|