aui datatable可排序选择行

时间:2018-05-28 09:57:09

标签: javascript liferay-aui alloy-ui

我正在使用aui库来制作可排序的数据表。我希望单元格可以选择(通常是纯文本,没有javascript事件绑定)。

columns定义为

var columns = [
    {
        key: "col1",
        label: "Column 1",
        sortable: true
    },
    {
        key: "col2",
        label: "Column 2",
        sortable: true
    },
    ...
];

如果我使用

之类的东西
var myDatatable = new A.DataTable.Base({
    columnset : columns,
    recordset : data
});

我可以选择单个行,但没有排序。

如果我使用

var myDatatable = new A.DataTable({
    columnset : columns,
    recordset : data
});

该表是可排序的,但我无法通过正常的鼠标按下+拖动来选择数据。

我在这里缺少什么?

我尝试添加以下插件

plugins: [{
    cfg: {
        type: "rows"
    },
    fn: A.Plugin.DataTableHighlight
},
{
    cfg: {
        selectRow: true,
        selectColumn: true
    },
    fn: A.Plugin.DataTableSelection
}]

但简单的选择没有运气。作为参考,aui文档是here。请注意,基本示例执行我需要的减去排序,并且真实示例需要在单元格上双击(允许编辑)才能选择/复制内容。

请帮忙。谢谢!

1 个答案:

答案 0 :(得分:0)

我设法通过清除mousedown和mouseup事件并覆盖getEditor函数来渲染表后解决它,并且排序仍然有效。

/* text is not selectable otherwise */
myDatatable.get("contentBox").purge(true, "mousedown");
myDatatable.get("contentBox").purge(true, "mouseup");
/* suppress getEditor */
A.DataTable.prototype.getEditor = function() {};