Приветы,
Подскажите как получать данные в
onActiveRowAction: function(buttonTag, Id, parentOnActiveRowAction) {
switch (buttonTag) {
// замещение базового метода для правильной обработки нажатия по тэгу
case "tagBnBackCall":
alert('QBackCall! = ' + Id);
Пару вопросов:
Дано Id данных есть - выбранной строки
Как получить данные из других столбцов грида через запрос к БД
Как через this добраться к jquery желательно?
Нравится
Привет,
если есть айди записи, то получение данных из бд есть на академии https://academy.terrasoft.ru/documents/technic-sdk/7-11/ispolzovanie-en…;
на примере что то вроде такого:
var id = Id; // Айди выбранной записи var esq = Ext.create("Terrasoft.EntitySchemaQuery", { rootSchemaName: "Contact" }); // Таблица куда запрос esq.addColumn("Name");//К примеру имя, можно добавить остальные колонки, подробнее по ссылке esq.getEntity(id, function (result) { if (!result.success) { this.showInformationDialog("Ошибка запроса данных"); return; } // Какие либо действия this.showInformationDialog(result.entity.get("Name");//Например вывести имя }, this);
Тут показал пример getEntity так же рекомендую посмотреть на реализацию getEntityCollection и добавление колонок в запрос.
"Как через this добраться к jquery желательно? " не понял, что имеется ввиду
Сериков Асхат Кайратович,
Привет, этот пример видел, но есть нюансы, может что-то не настроил или версия не та. По клиентской части вижу в require что jquery есть но не вызывается и в консоли хрома ее как нет, вот код:
onActiveRowAction: function(buttonTag, Id, parentOnActiveRowAction) {
switch (buttonTag) {
/*
case "edit":
alert('Нельзя открыть кандидата!');
break;
case "copy":
alert('Нельзя копировать кандидата!');
break;
case "delete":
alert('Нельзя удалить кандидата!');
break;
*/
// замещение базового метода для правильной обработки нажатия по тэгу
case "tagBnBackCall":
alert('QBackCall! = ' + Id);
alert(jQuery.fn.jquery);
alert($.fn.jquery);
var userId = Terrasoft.core.enums.SysValue.CURRENT_USER.value;
var uId = "#SxCandidateSectionDataGridGrid-item-" + Id;//SxCandidateSectionDataGridGrid-item-5713f1f2-7ac2-4970-a3b6-d1ad822335ee
alert(uId);
var mobNumber = this.JQ(uId).find('a').attr('title');
alert(mobNumber);
О JQuery: ни один из алертов где есть jquery не работает, каждый из них по отдельности комментировал, т. е. исключено что ошибка в одном и другие просто не идут. Пробовал просто с $(uId).find('a').attr('title'); and this.JQ(uId).find('a').attr('title'); and this.$(uId).find('a').attr('title'); - в общем у меня в строке грида есть Id и рядом идут нужные данные т. е. по факту мне запрос делать - лишнее. Но попробую с ним тк надо учиться и все такое
QArt,
понял, так глубоко я не копал, надобности использовать jquery как таковой не было.
Вообще получить значения в гриде можно если пройтись по гриду, сам не пробовал, но думаю это то что вам нужно https://academy.terrasoft.ru/documents/technic-sdk/7-11/kak-dobavit-dey…; особенно метод
showOrderInfo
он как раз достает значение из выбранной строки, поэтому думаю можно пройтись по элементу gridData и вытащить все значения в гриде
QArt,
Не за что, сам тоже продолжаю учиться
Для меня Академия лучший источник,
куски кода подходят только по ситуации,
но например чтобы вытащить данные через entitySchemaQuery то код который я писал в первом комментарии выше должен помочь.
По JQuery и ViewModel не имею идей к сожалению
QArt,
Думаю зависит от ситуации, можешь привести пример в каком контексте будешь писать и читать?
По тому как делаем мы, то это смесь изменения данных на стороне клиентских модулей, и на стороне сервака так сказать через веб сервисы в зависимости от нужды. Иногда легче делать на серваке иногда наоборот, как то так. Создание веб сервисов и их использование есть на академии.
Сериков Асхат Кайратович,
Сейчас сделал кнопку позвонить в кандидатах, он выросли из контактов. Сделал кнопку "позвонить", убрал лишние кнопки. Теперь нужно считать сколько раз звонили кандидату, на кнопке выводить "позвонить (2, 3, ...)". Для реализации создал объект - он стал таблицей,
AACandCall - idcand, callcount, calltime, calldate наследуется от базового объекта
//0 если первый раз звонят, -1 if Error
getCallCount: function (candId) {
// Создаем экземпляр класса Terrasoft.EntitySchemaQuery с корневой схемой [Contact].
var esq = this.Ext.create("Terrasoft.EntitySchemaQuery", {
rootSchemaName: "AACandCall"
});
// Добавляем колонку с именем основного контакта контрагента, который относится к данному контакту.
esq.addColumn("CallCount");
// Получаем одну запись из выборки по [Id] объекта карточки и отображаем ее
// в информационном окне.
esq.getEntity(candId, function(result) {
if (!result.success) {
// обработка/логирование ошибки, например
//this.showInformationDialog("Ошибка запроса данных");
return -1;
}
return result.entity.get("CallCount");
}, this);
},
пока это все что смог написать, возвращает undefined т. е. без ошибки работает, еще надо вот такое написать
updateCount: function (candId, callCount) {
return -1;
},
//всегда пишет 1 в callCount
insertCount: function (candId) {
return -1;
},
Вопрос там ли я это вообще делаю и теми ли инструментами???
QArt,
Первый вопрос должен быть почему он вообще возвращает undefined.
Ну а в целом все вроде сделано там где надо, тут как бы сказать, нет одного всемирного подхода, делают как могут подручными средствами, например кто то может обновить счетчик звонков в клиентской схеме, а кто то через веб сервис.
Если все что нужно это только обновить то как мне кажется подходит клиентская схема.
Если же следует более сложная логика после обновления счетчика (скажем отправка почты, смена статусов и т.д), то я возможно предпочел бы сделать это веб сервисом. Конечно это можно было бы сделать и на клиентской стороне, но это не всегда удобно. Поэтому все упирается в то как удобнее именно тебе.
Сериков Асхат Кайратович,
Сделал. Столкнулся с задачей: синхронизации асинхронных вызовов. Функция getCallCount в запросе если такого нет вызывала insertCount(candId), если есть то updateCount(candId, callCount+1). Вообще мне как программисту с бэкенда не понятно как так делать вызовы к БД с клиента к тому же прямо к ОнКлик, но как фронтендер не знаю как это нормально сделать :)
Как обработать событие которое возникает при выборе строки???, когда открывается меню с кнопкой позвонить, ей надо надпись менять "позвонить" или "позвонить(номер звонка)" [важно что эта кнопка нами же добавлена по operation: insert] т. е. будет вызвана функция как getCallCount только у нее вместо insertCount and updateCount будет устанавливаться кнопке соответствующий caption. Вот мой уровень развития на фронтенде только так позволяет это сделать, а как это по нормальному делать не знаю :)