当前位置: 首页 > 知识库问答 >
问题:

甘特图的DHTMLX Multiselect下拉复选框过滤器

夹谷硕
2023-03-14

我正在尝试使用下拉复选框列表筛选甘特图。这是我的密码

指数html

<label class="text-primary" for="department">Select by Departments: </label>
    <select id="department" style="width:200px; height:20px; " mode="checkbox">
                            <option value="ALL" selected="1" >ALL</option>
                            <option value="ARTIST">ARTIST</option>
                            <option value="ADMIN">ADMIN</option>
                            <option value="LEAD">LEAD</option>
                            <option value="HR">HR</option>
                            <option value="PRODUCTION">PRODUCTION</option>
                            <option value="MANAGEMENT">MANAGEMENT</option>
                            <option value="TECHNOLOGY">TECHNOLOGY</option>
                        </select>

作用

<script>
            var myCombo;
            function checkbox_department() {
            myCombo = dhtmlXComboFromSelect("department");
            myCombo.attachEvent("onCheck", function(value, state){
                gantt.attachEvent("onBeforeTaskDisplay", function (id, task) {
                    var department_value = value

                     if (task.job_category == department_value || department_value == 'ALL') {
                     console.log(value);
                         return true;
                    }
                 });
                 gantt.render();
            });

            }

        </script>

job_category来自JSON文件。

到目前为止,我设法用我选中的任何第一个复选框过滤甘特图,但当我选中另一个复选框时,假设我选中了艺术家和制作,所有内容都会消失,并在控制台日志中显示出来

3PRODUCTION
7ARTIST
2PRODUCTION
52ARTIST
PRODUCTION
51ARTIST
2PRODUCTION
3ARTIST
PRODUCTION
22ARTIST

它会变成那样,如果我只是在这里打印屏幕整个事情会更容易,但我正在使用我的办公室桌面,文件上传被阻止。有人能帮我解决这个问题吗,提前感谢

共有1个答案

水麒
2023-03-14

每次用户检查组合值时,您的组合都会添加一个onBeforeTaskDisplay处理程序,而当选项未选中/未选择时,永远不会删除以前添加的处理程序。我建议将组合框选择存储在某个范围变量中,并仅声明一个onBeforeTaskDisplay处理程序,该处理程序将根据该变量的值过滤gantt。

然后,在combo的onCheck处理程序中,使用combo的选择状态更新范围变量,并调用甘特图重绘以调用过滤

您的代码可能如下所示:

var myCombo;
function checkbox_department() {
    var department_value = 'ALL';

    myCombo = dhtmlXComboFromSelect("department");
    myCombo.attachEvent("onCheck", function(value, state){
        department_value = value;// put combo value into scope variable
        gantt.render();// and repaint gantt
    });

    // filter gantt by value of the scope variable
    gantt.attachEvent("onBeforeTaskDisplay", function (id, task) {
        if (task.job_category == department_value || department_value == 'ALL') {
            console.log(value);
            return true;
        }
    });
}

这是一个简化的演示,以防我的解释和代码示例出错http://docs.dhtmlx.com/gantt/snippet/b6053d50

更新:

如果您有多选组合,您可能需要一些不同的代码。以下内容应该有效:

var myCombo;
function checkbox_department() {
    var department_value = {'ALL': true};

    myCombo = dhtmlXComboFromSelect("department");
    myCombo.attachEvent("onCheck", function(value, state){
        var values = myCombo.getChecked();
        department_value = {};// put combo value into scope variable
        for(var i = 0; i < values.length; i++){
            department_value[values[i]] = true;// build hash for easy check later
        }
        gantt.render();// and repaint gantt
    });

    // filter gantt by value of the scope variable
    gantt.attachEvent("onBeforeTaskDisplay", function (id, task) {
        if(department_value['ALL'])
            return true;

        return !!department_value[task.job_category];
    });
}
 类似资料:
  • 问题内容: 我想过滤结果。 有一个葡萄酒清单,我的愿望是当未选中任何复选框时,将显示整个葡萄酒清单。 当仅选中1个复选框时,显示相关类别 当选中多个复选框时,将显示相关类别 我是AngularJS的新手,我尝试了ng-model都没有成功,这是没有与函数关联的ng-model的代码: 如何使用ng-model或ng-change将功能与每个复选框按钮相关联以具有实时过滤模型? 问题答案: 只是添加

  • 我有一个小问题与复选框集成在谷歌地图控件。 在谷歌地图API v3文档中,它说你可以使用“自定义控件”(https://developers.google.com/maps/documentation/javascript/examples/control-custom),但没有关于下拉框的内容。我在网上冲浪,发现了布里亚纳·沙利文的这个例子: http://vislab-ccom.unh.edu

  • 甘特图用于比较类别之间的数据。此外,它还可用于识别每个过程所花费的时间。 它显示了一段时间内任务值的进展。它在一段时间内广泛用于项目管理和其他类型的变异研究。 除时间维度外,甘特图也采用维度和度量。 例如,使用Sample-Superstore数据源,可以按照每种类型的发运模式进行运输。对于创建,甘特图遵循程序如下: 第1步:转到工作表。 单击“标记(Marks)”窗格中的下拉按钮。 从给定列表中

  • 主要内容:什么是JFreeChart 甘特图,JFreeChart 甘特图的示例什么是JFreeChart 甘特图 甘特图是一种条形图,常用于计划和安排项目任务和事件。 下图显示了 JFreeChart 库中包含的甘特图的一些演示版本: JFreeChart 甘特图的示例 让我们以人口数量作为样本数据。 软件开发阶段 预计日期 实际日期   需求分析 2017-07-03 2017-07-07 2017-07-03 2017-07-05 需求设计 2017-07-10 201

  • 本文向大家介绍vue.js实现单选框、复选框和下拉框示例,包括了vue.js实现单选框、复选框和下拉框示例的使用技巧和注意事项,需要的朋友参考一下 Vue.js可以很方便的实现数据双向绑定,所以在处理表单,人机交互方面具有很大的优势。下边以单选框、复选框和下拉框为例介绍他们在HTML和Vue.js中的具体实现方式。 一、单选框   在传统的HTML中实现单选框的方法如下: 注:这里name属性值必

  • 问题内容: 我想设计一个复选框下拉列表,并使复选框为多选。我使用了下面的代码,但是由于每次单击复选框时模板都会刷新,因此无法进行多项选择,请提出一些建议吗? 问题答案: 您可以使用诸如 angularjs-dropdown-multiselect之类的 指令,您可以在互联网上很容易找到它 以下是一些示例: angularjs-下拉菜单,多选 - 小提琴 multiselectDropdown -