Простая настройка: отдел: сотрудник, 1: М и форма поиска, которая фильтрует по Фамилия =, Фамилия =, электронная почта содержит, возраст> =, дата присоединения <= и соответствующий отдел =. </p>
Кнопка отправки откроет страницу результатов с источником данных, установленным на соответствующий метод поиска. У меня есть прямая фильтрация, где мы привязываемся к @ datasource, query.filters.FirstName_equals и т. Д. У меня есть источник данных, основанный на решении для построения запросов, и третье решение на основе сценария запроса. При отправке открывается соответствующая страница результатов поиска, и для источника данных страницы результатов устанавливается соответствующий источник данных: фильтр, построитель запросов или сценарий запроса.
Решение, использующее скрипт запроса и страницу результатов на основе этого источника данных, выглядит следующим образом: -
скрипт запроса
var params = query.parameters;
return getEmployeeRecords_(
params.param_FirstName,
params.param_LastName,
params.param_Email,
params.param_StartDate,
params.param_Age,
params.param_Department
);
и
function getEmployeeRecords_( firstName, lastName, email, startDate, age,
department) {
var ds = app.models.Employee.newQuery();
if ( firstName )
ds.filters.FirstName._equals = firstName;
if ( lastName )
ds.filters.LastName._equals = lastName;
if ( email )
ds.filters.Email._contains = email;
if ( startDate )
ds.filters.StartDate._greaterThanOrEquals = startDate;
if ( age )
ds.filters.Age._lessThanOrEquals = parseInt(age, 10);
if ( department )
ds.filters.Department.Department._equals = department;
var records = ds.run();
var recs = records.length;
// update calculated model with record count
var calculatedModelRecords = [];
var calculatedModelRecord = app.models.Employee_RecordCount.newRecord();
calculatedModelRecord.RecordCount = recs;
calculatedModelRecords.push(calculatedModelRecord);
return records;
}
На странице результатов для скрипта запроса страница источника данных просто не работает. Запрос, который корректно возвращает 8 записей, для которых размер страницы запроса установлен на 5, позволяет мне заставить пейджер перейти на страницу 1000, если я хочу, но источник данных всегда остается на первой странице записей. Если для размера страницы установлено, например, 100, правильный набор результатов четко отображается. Источники данных с прямым связыванием и построителем запросов работают должным образом.
Причиной выполнения этих различных поисков является проверка и оценка каждой опции, а также возможность возврата количества записей, что я могу сделать только с помощью скрипта запроса.
Кто-нибудь имеет какие-либо идеи относительно причины этого неправильного поведения App Maker?
Также, когда я запрашиваю вычисленную модель Employee_RecordCount для получения количества записей, используя метку пользовательского интерфейса с текстом «Количество записей:» + @ datasources.Employee_RecordCount.item.RecordCount, это показывает нулевое значение.
Каков наилучший способ получения количества записей с использованием рассчитанной модели Employee_RecordCount?