jQuery Bootgrid - условный форматер - PullRequest
0 голосов
/ 09 июня 2018

Хотите создать условное действие форматирования / строки с помощью jQuery Bootgrid.Например, если задано определенное значение в данных PHP, отображается форматер, в противном случае - нет.Я не могу найти какую-либо документацию или предыдущие вопросы о стековом потоке, которые касаются этого.

РЕДАКТИРОВАТЬ:

Мой текущий способ сделать это в моем контроллере выглядит так:

$actions = array(
    'override' => array(
        'icon' => 'flare red',
        'link' => '/edit',
        'perm' => 'Edit',
        'title' => '...',
        'condition_and' => array(
            'status' => array(
                'column' => 'status !=',
                'value' => 'Suspended'
            ),
            'registered' => array(
                'column' => 'reg ==',
                'value' => 'Yes'
            )
        ),
        'disabled_icon' => 'flare grey',
        'disabled_title' => '...'
    )
);

В функции, которая затем генерирует сетку, я интерпретирую эти настройки при циклическом просмотре данных.Единственная часть, которая по-прежнему хакерская, на мой взгляд, это когда я перебираю данные с помощью PHP, а затем создаю строку JS, соответствующую условию:

if (!empty($vv['condition_and']))
{
    $check_cond = '+(';
    foreach ($vv['condition_and'] as $conk => $conv)
    {
        $check_cond .= '(row.' . $conv['column'] . ' ' . $conv['operator'] . ' "' . $conv['value'] . '") && ';
    }
    $check_cond = rtrim($check_cond, ' && ');
    $out .= '"\
        "' . $check_cond . ' ? "\
            <a style=\"margin-right: 8px\" href=\"' . base_url() . $vv['link'] . '/" + row.id + "\"><i title=\"' . $vv['title'] . '\" class=\"zmdi zmdi-hc-lg zmdi-' . $vv['icon'] . '\"></i></a>" : "\
            <i style=\"margin-right: 8px;\" title=\"' . $vv['disabled_title'] . '\" class=\"zmdi zmdi-hc-lg zmdi-' . $vv['disabled_icon'] . '\"></i>")+"\
    " + ';
}

Но если нет четкого способа сделать этоэто лучше, я просто буду придерживаться этого пока.

1 Ответ

0 голосов
/ 21 июня 2018

Вы можете проверить это в собственной функции форматирования, используя свойства в данных json:

$("#grid-data").bootgrid({
    ajax: true,
    url: "/api/get-data",
    formatters: {
        "paymentButton": function(column, row)
        {
            if (row.HasPayment)
                return '<button class="btn btn-primary" data-id="' + row.PaymentId + '" title="Check payment details"><i class="fa fa-money"></i></button>';
            return "";
        }
    }
});

В этом случае в столбце, который использовал этот форматер paymentButton, будет отображаться кнопка только для строкгде свойство HasPayment было истинным или ничего не отображало, когда оно было ложным.

Вы можете вернуть любые данные, которые вы хотите, из вашего API PHP бэкэнда и проверить их внутри функции форматирования.

Функция форматирования вызывается независимо от способа загрузки данных.

...