Я использую Kendo UI для веб-приложения в php; Я пытаюсь создать и использовать сетку.
код:
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
require ("config_inc.php");
require_once ("../ui/lib/DataSourceResult.php");
require_once ("../ui/lib/Kendo/Autoload.php");
header('Content-Type: application/json');
$request = json_decode(file_get_contents('php://input'));
$result = new DataSourceResult('mysql:host=localhost;dbname=xxx;charset=utf8', 'xxx', 'xxx');
$type = $_GET['type'];
$columns = array('id', 'lab_name', 'created_on', 'created_by', 'edited_on', 'edited_by', 'deleted_on', 'deleted_by');
switch($type) {
case 'create':
$result = $result->create('laboratory', $columns, $request->models, 'id');
break;
case 'read':
$result = $result->read('laboratory', $columns, $request);
break;
case 'update':
$result = $result->update('laboratory', $columns, $request->models, 'id');
break;
case 'destroy':
$result = $result->destroy('laboratory', $request->models, 'id');
break;
}
echo json_encode($result, JSON_NUMERIC_CHECK);
exit;
}
function diaplayLaboratory() {
require_once ("inc/config_inc.php");
require_once ("ui/lib/DataSourceResult.php");
require_once ("ui/lib/Kendo/Autoload.php");
$read = new \Kendo\Data\DataSourceTransportRead();
$read ->url('inc/laboratory.php?type=read')
->contentType('application/json')
->type('POST');
$create = new \Kendo\Data\DataSourceTransportCreate();
$create ->url('inc/laboratory.php?type=create')
->contentType('application/json')
->type('POST');
$update = new \Kendo\Data\DataSourceTransportUpdate();
$update ->url('inc/laboratory.php?type=update')
->contentType('application/json')
->type('POST');
$destroy = new \Kendo\Data\DataSourceTransportDestroy();
$destroy ->url("inc/laboratory.php?type=destroy")
->contentType('application/json')
->type('POST');
$transport = new \Kendo\Data\DataSourceTransport();
$transport ->create($create)
->read($read)
->update($update)
->destroy($destroy)
->parameterMap('function(data) {
return kendo.stringify(data);
}');
$labNameValidation = new \Kendo\Data\DataSourceSchemaModelFieldValidation();
$labNameValidation ->required(true)
->min(1);
$labName = new \Kendo\Data\DataSourceSchemaModelField('lab_name');
$labName ->type('string')
->validation($labNameValidation);
$model = new \Kendo\Data\DataSourceSchemaModel();
$model ->id('id')
->addField($labName);
$schema = new \Kendo\Data\DataSourceSchema();
$schema->data('data')
->errors('errors')
->model($model);
$dataSource = new \Kendo\Data\DataSource();
$dataSource ->transport($transport)
->pageSize(20)
->schema($schema);
$laboratoryName = new \Kendo\UI\GridColumn();
$laboratoryName ->field('lab_name')
->title(T_("lab_name"));
$command = new \Kendo\UI\GridColumn();
$command ->addCommandItem("edit")
->addCommandItem("delete")
->title(' ')
->width(250);
$grid = new \Kendo\UI\Grid('grid');
$grid ->addColumn($laboratoryName, $command)
->dataSource($dataSource)
->addToolbarItem(new \Kendo\UI\GridToolbarItem('create'))
->editable('inline')
->scrollable(false);
echo $grid ->render();
}
?>
при этом я получаю только данные и не могу удалять, редактировать и создавать.
Я должен получить данные с помощью пользовательского выбора (я не хочу показывать удаленный элемент) и показывать только имя_лаборатории.
Когда я обновляю, редактирую или создаю, мне нужно также установить другое поле, которое я не показываю в сетке.
Как я могу это сделать?
Спасибо
Задача ещё не решена.
Других решений пока нет …