jqGridPHP - таблицы на ajax без головной боли

ezhikov

Новичок
К сожалению, ROW_NUMBER в MS Access отсутствует :( ROW_NUMBER предлагают заменить на ', (select count(*) from '.$this->table.' where z.id >= id) AS _rownum '. Могу я в адаптере _rownum заменить на что-нибудь без передней педальки, например на rownu_m, иначе Access ругается? При такой конструкции таблички выводятся, но пока штатный поиск и сортировка не работают.
 
Последнее редактирование:

Aleks69

Новичок
подскажите пожалуйста в чём может быть проблема
не отображаются данные
<?php
require 'config.php';
require 'layout.php';
header("Content-Type: text/html; charset={$_CONFIG['encoding']};");
require 'jqGridLoader.php';
$jq_loader = new jqGridLoader;
$jq_loader->set('db_driver', 'Mysql');
$jq_loader->set('db_host', $_CONFIG['db_host']);
$jq_loader->set('db_user', $_CONFIG['db_user']);
$jq_loader->set('db_pass', $_CONFIG['db_pass']);
$jq_loader->set('db_name', $_CONFIG['db_name']);

$jq_loader->set('debug_output', true);

$jq_loader->autorun();

class jqSimple extends jqGrid {
protected function init() {
#Set database table
$this->table = 'Unit';
#Make all columns editable by default
$this->cols_default = array('editable' => true);
#Set columns
$this->cols = array(
'Unit_ID' => array(
'label' => 'ID',
'width' => 10,
'align' => 'center',
'editable' => false, //id is non-editable
),
'Unit_Name' => array(
'label' => 'Unit_Name',
'width' => 35,
'editrules' => array('required' => true),
),
);
#Set nav
$this->nav = array('add' => true, 'edit' => true, 'del' => true);
#Add filter toolbar
$this->render_filter_toolbar = true;
}
}
JS (layout.php):
<script>
<?= $rendered_grid ?>
</script>
 
Последнее редактирование:

grigori

( ͡° ͜ʖ ͡°)
Команда форума
@~WR~, я тут взял твою либу, для sdand-alone админки/crm - удобно!
а не хочешь ли ты автоматизировать сборку и установку через composer? а то установка немного морочная - пойди туда, почитай, потом сюда :)
 

~WR~

Новичок
@~WR~, я тут взял твою либу, для sdand-alone админки/crm - удобно!
а не хочешь ли ты автоматизировать сборку и установку через composer? а то установка немного морочная - пойди туда, почитай, потом сюда :)
Думал! Единственная проблема - нужно будет namespace прикрутить и поменять autoloader на какой-нибудь стандартный.
Я сейчас переездом из России занимаюсь. Как успешно перееду - сделаю.

Заодно замержу все изменения за последние пару лет и напишу английскую документацию.
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
namespace нужны, не надо их бояться, PHPStorm сам дописывает use вверху файла
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
не хватает PHPDoc
например, вызов $loader->render('Customers'); магический, не подсвечивается, нет перехода даже на интерфейс или абстрактный класс
у меня ошибка - не находит класс Customers, а найти где он ищет и отдебажить довольно сложно, не представляю с чего начать искать
 

mgarikm

Новичок
Добрый день!
Совсем запутался. Куда и что дописать, что-бы при выборе (клике) строки субгрида справа открывалась пользовательская форма для просмотра, а при нажатии на карандаш (редактирование в субгриде) появлялась возможность редактировать эту форму? За основу взял стандартный пример субгрида.
 

Вложения

Вейдер

Новичок
Умер проект или нет? Давно никто ничего не писал.
В примерах jquery.jqGrid.min.js версии 4.4.0. Поставил себе версию 5.1.1, в итоге некоторые функции перестали работать, в частности экспорт в Excel.
Будет проект обновляться?
 

Вейдер

Новичок
Есть кто тут? Есть вопрос. Не знаю как сделать. Может кто помочь? Есть смысл сюда писать?
 

el-vis30

Новичок
Я разворачивал на jqGrid 5.1.1 пару месяцев назад проект с десятком гридов со специфической логикой.
Особых проблем не было, разве что что пришлось править то что касалось вывода ошибок через выброс Exception.

Смотрите что у вас в логах, вывод Excel в Jqgrid-PHP это всего лишь генерация html таблицы и передача ее под экселевским заголовком.
Кстати рекомендую взять вместо jqGrid от trirand взять free fork of jqGrid, найдете на гитхабе..
 
  • Like
Реакции: ~WR~

Вейдер

Новичок
Я разворачивал на jqGrid 5.1.1 пару месяцев назад проект с десятком гридов со специфической логикой.
Спасибо за ответ. Не, с выводом в Excel я разобрался. Вопрос в другом:

Добавляю кнопки Добавить и Изменить во вложенную таблицу по этому примеру http://jqgrid-php.net/examples/?render=jqMiscSubgrid

Если нажать на кнопку Добавить или Изменить во вложенной таблице, то появляется пустое модальное окно, то есть без полей. Вот мои файлы:

PHP Grid:

PHP:
<?php

class jqReu extends jqGrid
{
    protected function init()
    {   
        $this->options = array(
            'sortname' => 'name_uk',
            'sortorder' => 'asc',
        );

        #Set database table
        $this->table = 'uk';

        #Make all columns editable by default
        $this->cols_default = array('editable' => true);

        #Set columns
        $this->cols = array(
    
           #Real id is hidden
            'id_uk' => array('hidden' => true,
            ),
    
            'name_uk' => array('label' => 'УК',
                'width' => 100,
                'editrules' => array('required' => true),
            ),
        );

        $this->render_filter_toolbar = true;
    }
 
   protected function opRenderSubgrid()
    {
        echo $this->Loader->render('jqReu2', array('id_uk' => $this->input('id_uk')));
        exit;
    }

    protected function opEdit($id, $upd)
    {
        return true;
    }
}
PHP Subgrid:

PHP:
<?php

class jqReu2 extends jqGrid
{
    protected function init()
    {
       $this->nav = array(
     
           #Set common nav actions
           'add' => true,
            'edit' => true,
            'del' => true,
            'view' => true,
       );
     
        $this->options = array(
           'width' => 1000,
           'height' => 'auto'
       );
     
        $this->render_extend = '{}';
        $this->render_suffix_col = 'id_uk';

        #Set database table
        $this->table = 'reu';

       $this->query = "
            SELECT {fields}
            FROM reu
               JOIN uk ON (reu.id_uk = uk.id_uk)
            WHERE {where}
        ";

        #Set columns
        $this->cols = array(
     
            'id_reu' => array('hidden' => true,
                'db' => 'reu.id_reu',
            ),

            'id_uk' => array('hidden' => true,
                'db' => 'reu.id_uk',
            ),

            'name_reu' => array('label' => 'REU',
               'db' => 'reu.name_reu',
                'width' => 100,
                'editrules' => array('required' => true),
            ),
        );

        #Set essential condition
        $this->where[] = 'reu.id_uk = ' . intval($this->input['id_uk']);
    }

    #prevent common html rendering
    protected function renderHtml($data)
    {
        return '';
    }
 
   #Save columns to different tables
    protected function opEdit($id, $upd)
    {
        #Get editing row
        $result = $this->DB->query('SELECT * FROM reu WHERE id_reu=' . intval($id));
        $row = $this->DB->fetch($result);

        #Save other vars to items table
        $this->DB->update('reu', $upd, array('id_reu' => $id));
    }
}

Javascript:

Код:
<script>
    var opts = {
        subGrid:true,
        subGridRowExpanded:function (subgrid_id, row_id) {
            $('#' + subgrid_id)
                .append('<table id="jqReu2' + row_id + '"></table>')
                .append('<div id="jqReu2' + row_id + '_p"></div>');

            $.ajax({
                url:$(this).getGridParam('url'),
                dataType:'script',
                data:{'oper':'renderSubgrid', 'id_uk':row_id}
            });
        }
    };

    <?= $rendered_grid ?>
</script>

Не пойму где что не так.
 
Последнее редактирование:

el-vis30

Новичок
В классе субгрида нет признака 'editable' => true для полей. Нужно его прописывать либо в default значениях, либо в настройках каждого поля. Поэтому у вас пустая модалка с кнопками.
 

Вейдер

Новичок
подскажите, как сделать, чтоб при добавлении новой записи во вложенную таблицу одно поле было автоматически заполнено значением id родителя? в моем примере, выше, надо чтобы в поле reu.id_uk стояло значение id_uk из родительской таблицы
 

Вейдер

Новичок
Кто подскажет почему не работает группировка как в примере http://trirand.com/blog/jqgrid/jqgrid.html - Grouping - Simple grouping with array data ?
Вот код

PHP:
$this->options = array(
            'sortname' => 'name_gorod',
            'grouping' => true,
           'groupingView' => array(
               'groupField' => 'name_gorod'
           ),
        );
 
Сверху