【问题标题】:Slickgrid checkbox row selection not workingSlickgrid复选框行选择不起作用
【发布时间】:2013-06-20 20:38:21
【问题描述】:

* 已解决,请参阅下面的评论 *

我正在尝试通过在 slickgrid http://mleibman.github.io/SlickGrid/examples/example-checkbox-row-select.html 中遵循此示例来实现复选框行选择模型,但它不起作用。

当我在我的应用程序中尝试它时,我得到的只是标题单元格中的一个复选框,但所有行都有一个“...”(值未定义)。

有人可以帮忙吗?

这是我的代码:

 var EntityGrid = function ($container, el, columns, collection, filterFields, isUnmappable, source) {

    var options = {
        enableCellNavigation:true,
        enableColumnReorder:false,
       // forceFitColumns:true,
        enableTextSelectionOnCells:true,
        rowHeight: 28
    };

    var checkboxSelector = new Slick.CheckboxSelectColumn({
        cssClass: "slick-cell-checkboxsel"
    });

    this.isUnmappable = isUnmappable;
    this.source = source;
    columns = this.prepareColumns(columns, checkboxSelector);
    this.collection = collection;
    this.$container = $container;
    this.dataView = new Slick.Data.DataView();
    this.grid = new Slick.Grid(el, this.dataView, columns, options);
    this.grid.setSelectionModel(new Slick.RowSelectionModel({selectActiveRow: false}));
    this.grid.registerPlugin(checkboxSelector);
    this.filterFields = filterFields;
    this.setupGridEvents();
    this.setupFilter();
    this.grid.render();
    var columnpicker = new Slick.Controls.ColumnPicker(columns, this.grid, options);
    return this;
};

EntityGrid.prototype = {

    prepareColumns:function (columns, checkboxSelector) {
        var self = this;
        columns.push(checkboxSelector.getColumnDefinition());
        _.each(columns, function (item) {
            if (item.type === "link") {
                item.formatter = self.linkFormatter;
            } else if (item.type === "editableBoolean") {
                item.formatter = self.checkboxFormatter;
            } else {
                item.formatter = self.defaultFormatter;
            }
        });
... other columns definations

【问题讨论】:

  • 好的,我有一个默认格式化程序,这是导致此问题的根本原因。一旦我关闭默认格式化程序,行选择复选框就可以正常工作。
  • 您能否发布您为修复它所做的工作作为对此问题的回复,并将其标记为答案?为可能从互联网搜索中遇到问题的其他人提供答案通常被认为是一种很好的形式。

标签: javascript slickgrid


【解决方案1】:

我所做的只是阻止我的默认格式化程序应用于复选框选择列。

我在 _.each 循环中添加了一个条件,如下所示:

_.each(columns, function (item) {
        if(item.cssClass !== "slick-cell-checkboxsel") {
            if (item.type === "link") {
                item.formatter = self.linkFormatter;
            } else if (item.type === "editableBoolean") {
                item.formatter = self.checkboxFormatter;
            } else {
                item.formatter = self.defaultFormatter;
            }
        }
    });

【讨论】:

    猜你喜欢
    • 2012-08-15
    • 2011-09-03
    • 1970-01-01
    • 2011-05-15
    • 1970-01-01
    • 2012-04-17
    • 1970-01-01
    • 2021-05-29
    • 2015-11-27
    相关资源
    最近更新 更多