jQuery Bootgrid - 条件格式化程序

时间:2018-06-09 09:57:57

标签: jquery jquery-bootgrid

希望使用jQuery Bootgrid创建条件格式化程序/行操作。例如,如果设置了PHP数据中的某个值,则显示格式化程序,否则不显示。我无法找到解决此问题的任何文档或以前的stackoverflow问题。

修改

我目前在我的控制器中执行此操作的方式如下:

$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' => '...'
    )
);

在我生成网格的函数中,我在循环数据时解释这些设置。在我看来,唯一仍然是hacky的部分是我使用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 :(得分:1)

您可以使用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属性为true的行显示一个按钮,否则显示为{false}的任何内容。

您可以从后端PHP API返回所需的任何数据,并在formatter函数中检查它们。

无论加载数据的方式如何,都会调用formatter函数。