【问题标题】:dgrid Checkbox not showingdgrid复选框未显示
【发布时间】:2016-03-23 19:44:22
【问题描述】:

我尝试了很多变化,但由于某种原因,选择器复选框没有显示。任何人都可以帮我解决这个问题。

下面是我正在使用的示例代码。

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<script type="text/javascript">
    var djConfig = {
        parseOnLoad: true
    };
</script>
<script type="text/javascript" src="https://js.arcgis.com/3.16/" ></script>

<script type="text/javascript">
    require(["dojo/_base/declare", "dojo/_base/lang", "dojo/_base/array", "dojo/store/Memory", "dgrid/OnDemandGrid","dgrid/Selection", "dgrid/selector", "dstore/Trackable", "dojo/domReady!"],function (declare, lang, array, Memory, Grid, SelectionMixin, SelectorMixin, Trackable) {
            var CustomGrid = declare([Grid, SelectionMixin, SelectorMixin]);

            var data = [{
                    STRC_ID : "B988858",
                    Selected: false,
                    FNDG_CTGY_NB : "0010"
                }, {
                    STRC_ID : "B9811118",
                    Selected: true,
                    FNDG_CTGY_NB : "0020"
                }];

            var TrackableMemory = declare([Memory, Trackable]);
            var memory = new TrackableMemory({
                idProperty: "STRC_ID",
                data: data
            });

            var grid = new CustomGrid({
                store: memory,
                selectionMode: 'single',
                columns: getSTColumns(), 
                allowSelectAll: true
            }, 'gridHolder');
            grid.startup();

            function getSTColumns(){
                return {
                    col1: { label: "", selector: 'checkbox' },
                    col2: { label: 'STRC_ID', field: "STRC_ID", sortable: false },
                    col3: { label: 'FNDG_CTGY_NB', field: 'FNDG_CTGY_NB' }
                };
            };

           grid.refresh();

        });

</script>
</head>
<body>
    <div id="gridHolder"></div>
</body>
</html>

提前感谢您的支持。

这里是link to jsBin

【问题讨论】:

  • 欢迎来到 SO!请用你的代码创建一个 jsfiddle,你会增加答案的变化。谢谢!

标签: checkbox dojo selector dgrid


【解决方案1】:

您正在尝试使用 Selector,因为它存在于 dgrid 0.4+ 中,但 ArcGIS 包含 dgrid 0.3,它不是一个 mixin,而是一个列插件(在 dgrid 0.4 中已停用的概念)。这也是为什么它有一个小写的s,而在0.4+中是没有的。

这是一个如何正确使用 0.3 的 selector 的示例,来自 0.3.17 selector docs

require([
    "dojo/_base/declare", "dgrid/OnDemandGrid", "dgrid/Selection", "dgrid/selector"
], function(declare, OnDemandGrid, Selection, selector){
    var grid = new (declare([OnDemandGrid, Selection]))({
        store: myStore,
        selectionMode: "single",
        columns: {
            col1: selector({ label: "Select", selectorType: "radio" }),
            col2: "Column 2"
        }
    }, "grid");
    // ...
});

【讨论】:

    【解决方案2】:

    我无法重现您的错误,但请尝试摆脱 getSTColumns() 函数并直接使用您的 Object 字面量,例如:

        var grid = new CustomGrid({
            store: memory,
            selectionMode: 'single',
            columns: {
                col1: { 
                    label: "",
                    selector: 'checkbox'
                },
                col2: { label: 'STRC_ID', field: "STRC_ID", sortable: false },
                col3: { label: 'FNDG_CTGY_NB', field: 'FNDG_CTGY_NB' }
            }, 
            allowSelectAll: true
        }, 'gridHolder');
        grid.startup();
    

    此外,还有一个现场演示,提供了一些自动生成的源代码,可能对您的初始设置有用,更多信息可以在这里:http://dgrid.io/js/dgrid/demos/laboratory/

    【讨论】:

    • 我已经完成了演示,但仍然无法让它工作。这是我创建的 jsbin。 link[链接]
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-26
    • 2017-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-14
    相关资源
    最近更新 更多