Slickgrid - 一键复选框?

Kev*_*vin 13 slickgrid

当我在Slickgrid中创建一个复选框列(通过使用格式化程序/编辑器)时,我注意到需要两次点击才能与它进行交互(一个用于聚焦单元格,另一个用于与复选框交互).(这很有道理)

但是,我注意到我可以通过一次单击与复选框选择器插件(用于选择多行)进行交互.有什么方法可以让我的所有复选框都以这种方式运行吗?

Ako*_*Ako 7

对于其他读者,我通过在点击事件上修改网格数据本身来解决这个问题.将布尔值设置为反向,然后格式化程序将显示单击或未单击的复选框.

grid.onClick.subscribe (function (e, args)
{
    if ($(e.target).is(':checkbox') && options['editable'])
    {
        var column = args.grid.getColumns()[args.cell];

        if (column['editable'] == false || column['autoEdit'] == false)
            return;

        data[args.row][column.field] = !data[args.row][column.field];
    }  
});

function CheckboxFormatter (row, cell, value, columnDef, dataContext)
{
    if (value)
        return '<input type="checkbox" name="" value="'+ value +'" checked />';
    else
        return '<input type="checkbox" name="" value="' + value + '" />';
}
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你.


Ste*_*veJ 0

我使用该事件为我的布尔字段“ can_transmitonBeforeEditCell实现此目的

基本上捕获一个编辑单元格,单击所需的列,自己进行更改,然后返回 false 以停止单元格编辑事件。

grid.onBeforeEditCell.subscribe(function(row, cell) {                
            if (grid.getColumns()[cell.cell].id == 'can_transmit') {
                if (data[cell.row].can_transmit) {
                   data[cell.row].can_transmit = false;
                }
                else {
                    data[cell.row].can_transmit = true;
                }
                grid.updateRow(cell.row);
                grid.invalidate();
                return false;
            }
Run Code Online (Sandbox Code Playgroud)

这对我有用。但是,如果您使用 DataView 功能(例如过滤),则需要执行额外的工作来通过此更改更新数据视图。 我还没弄清楚该怎么做...