w2ui библиотека. как сделать фильтрацию вывода записей по RecordID?
Всем привет. Есть код, который рисует таблицу пользователей:
$('#users').w2grid({
name : 'users',
//limit : 50,
//url : 'users.php',
header : 'List of Respondents',
url: {
get: 'respondents/users.php',
save: 'respondents/users.php',
remove: 'respondents/users.php'
},
show: {
header : true,
toolbar : true,
footer : true,
toolbarAdd : true,
toolbarDelete : true
},
columns: [
{ field: 'resp_first_name', caption: 'First Name', size: '100px', searchable: true, sortable: true },
{ field: 'resp_last_name', caption: 'Last Name', size: '100px', searchable: true, sortable: true },
{ field: 'resp_mobile', caption: 'Mobile phone', size: '150px', searchable: true, sortable: true },
{ field: 'resp_phone', caption: 'Phone', size: '150px', searchable: true, sortable: true },
{ field: 'resp_email', caption: 'Email', size: '150px', searchable: true, sortable: true }
],
onAdd: function (event) {
editUser(0);
},
onDblClick: function (event) {
editUser(event.recid);
}
});
Есть также переменная, которая получает внешние данные в виде
Record = Array
(
[0] => 1
[1] => 2
[2] => 5
[3] => 7
[4] => 9
[5] => 12
[6] => 14
[7] => 27
)
Можно сделать её в JSON, просто так удобнее, это не принципиально. Вопрос: есть ли возможность настроить фильтрацию записей в w2grid по recid, которые соответствуют переменной Record? Метод с поиском не подходит, поскольку поиск идет только по видимым полям, перечисленным в columns:, а мне надо по recid, которая не отображается как поле, но априори присутствует в строке, возвращаемой с сервера (users.php). Править ответ на запрос в файле сервера users.php не хотелось бы, т.к. это универсальный файл для всех запросов, а проблема фильтрации записи сугубо локальная для данной страницы.
Ответы (1 шт):
Решил так:
onClick: function (event) {
var data = [];
var respondents = [];
var wfrecord = this.get(event.recid);//get workflow uid
//send POST to PHP and get responce
function get_respondents(callback){
$.ajax({
type: "POST",
url: "wfbase/resplist.php",
data: {"message" : wfrecord['doc_uid']},
success: function(data){
callback(data);//get responce from url:
}
});
}
//call get_respondents function
get_respondents(function(data){
var stringified = JSON.stringify(data);
var stringified = stringified.replace(new RegExp("id","g"), "recid");
var newdata = JSON.parse(stringified);
/*console.log('----------------');
console.log(data); // use data here
console.log(newdata); // use data here
console.log('----------------');*/
w2ui['users'].clear();
w2ui['users'].add(newdata);
w2ui['users'].refresh();
});
},
У меня 2 таблицы, левая и правая, правая зависит от выбора левой. При клике на строке левой таблицы (событие OnClick) происходит ajax передача через POST серверу данных о выбранной строке в файл resplist.php, от него же получаем ответ в виде JSON данных, соответствующих этой строке в переменную 'data', потом данные обрабатываются к виду, понятному w2ui (замена 'id' MySQL на recid), передаются в правую таблицу (users), после её предварительной очистки. Пришлось писать отдельный обработчик запроса resplist.php, т.к. проще оказалось делать каждый раз запрос к MySQL.