【问题标题】:Ignited datatables, how to use callback function?点燃的数据表,如何使用回调函数?
【发布时间】:2014-02-25 19:38:47
【问题描述】:

我正在使用 Ignited 数据表(用于 codeigniter)并且我正在使用服务器端。 我想根据它们的值以红色或绿色显示一些值。

这就是我在edit_column中调用函数的方式:

->edit_column('releve_statut', '$1', $this->label_this('releve_statut'))

这是我正在调用的函数:

public function label_this($str) {

    if($str == "Réalisé"){
        $r =  label_badge('success', 'Réalisé'); 
    } else if ($str == "En cours"){
       $r = label_badge('warning', 'En cours'); 
    }

    return $r;

}

有什么建议吗?

谢谢:)

【问题讨论】:

  • 我能问一下 label_badge 函数是做什么的吗?我很想加入 CSS 解决方案,但我真的不明白 label_badge 函数创建什么标记,以及它在哪里使用
  • 用于格式化文本。它创建一个彩色徽章。 function label_badge($type, $text){ return ''.$text.'';问题是我的函数 label_this 内部的比较不起作用:/
  • 当我添加第三个 else 时,它​​会显示其中的值: else { $r = 'Error'; }

标签: codeigniter datatables


【解决方案1】:

如果您想在服务器端使用回调,一个简单而轻松的解决方案是创建 Codeigniter Helper 类。

因此,在您的代码中,更改edit_column 的第三个参数:

->edit_column('releve_statut', '$1', 'label_this(releve_statut)')

最后,在辅助类中定义函数label_this($str)。在调用$this->datatables->generate()之前不要忘记加载它。

【讨论】:

    【解决方案2】:
    ->edit_column('releve_statut', '$1', 'callback_label_this(releve_statut)');
    

    Source

    不是这方面的专家,但我知道这就是它在 codeigniter 中其他地方的做法,所以虽然我无法测试,但这应该可以工作是有道理的

    原创(仍然有点相关) 你需要做的是有一个 CSS 样式表

    .bg-success{
        color: green;
    }
    .bg-warning{
        color: red;
    }
    

    这会将文本设置为彩色 如果您想要彩色背景,请将颜色替换为背景颜色。

    【讨论】:

    • 问题是比较不起作用。当我这样做时: if($str == "Réalisé"){ $r = 'AAA'; } else if ($str == "En cours"){ $r = 'BBB'; } 其他 { $r = '错误';结果是:'错误'! PS:数据库中的值为:enum('','En cours','Réalisé')。
    • 我已经编辑了它,所以我认为它应该是这样的
    • 感谢您的回答,但它仍然无法正常工作:/ 当我将您的代码放入我的表中时,它会显示此值:callback_label_this(releve_statut)
    【解决方案3】:

    服务器端的回调函数对我不起作用:/

    我所做的解决方案是将 fnDrawCallback 添加到数据表初始化(客户端)中,该初始化在每个“绘制”事件上都会被调用。

    "fnDrawCallback": function( oSettings ) {
                            var $green = $('.statut-style').filter(function() {
                                        return  ($(this).text() == 'Réalisé');
                                    });
                            // Set the green elements to color green
                            $green.addClass("badge bg-success");
          },
    

    如果有人知道如何在服务器端做到这一点,如果你分享我会很高兴;)

    谢谢!

    【讨论】:

      猜你喜欢
      • 2014-10-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-29
      • 2015-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多