首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Angular-Slickgrid:并非所有过滤器都出现在headerrow中

Angular-Slickgrid:并非所有过滤器都出现在headerrow中
EN

Stack Overflow用户
提问于 2020-02-03 22:16:57
回答 2查看 530关注 0票数 0

对于文档:我找到了问题和解决方案:

我们在数据集中使用数字id(如1,2,3,...)。在代码中的某个地方,网格变得混乱,并将错误的列映射到id :当我用grid.getHeaderRowColumn( col.id )请求div并用col.id填充它时,它显示了一个与col.id不同的id!说在同一时间内并不是所有的列都被找到是没有用的(所以不是所有的过滤器都可以设置,这是我最初的问题)。将id更改为字符串('id1','id2','id3',...)解决了问题!

我不知道这是不是一个bug,或者仅仅是动态列的不可能性,但现在只使用字符串作为id就行了。感谢@ghiscoding的帮助。

原问题:

我有一个奇怪的问题:

当我构建我的slickgrid时,并不是所有的列在标题行中都有filter-Input-box (尽管它们应该有,关于我的列定义)。

当我添加(或删除)列时,其他过滤器框出现/消失,而不更改其他列定义。所以它看起来是随机出现的(尽管使用相同的列,相同的过滤器出现/消失)。

使用普通的slickgrid,我可以手动设置这些过滤器来纠正这个问题。但是我怎样才能用angular-slickgrid做到这一点呢?

有什么建议吗?

我使用的是angular-slickgrid版本2.15.4。

编辑

这是我的gridOptions和ColumnDefinitions。(它们是动态构建的,但这是在启动网格之前从dev-tools中获得的)

代码语言:javascript
复制
columnDefinitions: {
    0: {id: 6, …}
    1: {id: 2, …}
    2: {
        id: 4
        fieldtype: "string"
        name: "deliveryaddressadditionalline"
        json_translate_property: null
        field: "deliveryaddressadditionalline"
        detailparams: {edit: true, tab: {…}, card: {…}}
        gridparams: {show: true, edit: false}
        filterable: true
        sortable: true
        type: 1
        editor: {model: ƒ}
        filter: {model: ƒ}
        grouping: {getter: "deliveryaddressadditionalline", collapsed: false, formatter: ƒ}
        rerenderOnResize: true
        }
    3: {
        id: "edit"
        name: ""
        field: ""
        width: 30
        formatter: ƒ (row, cell, value, columnDef, dataContext)
        onCellClick: (e, args) => { this.gotoDetailPane(e, args, detailInfo); }
        gridparams: {show: true}
        fieldtype: "edit"
        }
    4: {id: 1, fieldtype: "string", name: "id", json_translate_property: null, field: "id", …}
}

gridOptions: {
    enableColumnPicker: false
    headerMenu: {hideColumnHideCommand: true}
    enableGridMenu: false
    enableAutoResize: true
    autoResize: {containerId: "grid-container", sidePadding: 15}
    enableSorting: undefined
    autoEdit: false
    editable: true
    enableCellNavigation: true
    enableFiltering: true
    rowSelectionOptions: {selectActiveRow: true}
    enableRowSelection: true
    showHeaderRow: true
    showTopPanel: false
    enableDraggableGrouping: true
    createPreHeaderPanel: true
    showPreHeaderPanel: false
    preHeaderPanelHeight: 40
    draggableGrouping: {
        dropPlaceHolderText: "Drop a column header here to group by the column", 
        deleteIconCssClass: "fa fa-times", 
        onGroupChanged: ƒ, 
        onExtensionRegistered: ƒ
    }
    explicitInitialization: true
}

这就是结果(多种情况:列被打乱,过滤器随机出现,而代码是相同的):

EN

回答 2

Stack Overflow用户

发布于 2020-02-05 08:07:03

请注意,getHeaderRowColumn的前两行是

代码语言:javascript
复制
function getHeaderRowColumn(columnIdOrIdx) {
  var idx = (typeof columnIdOrIdx === "number" ? columnIdOrIdx : getColumnIndex(columnIdOrIdx));

因此,如果传递的参数是一个数字,它将被解释为列数组的从0开始的索引(而不是id)。如果参数是字符串,则查找列数组索引,并将该参数视为id。

因此,您的解决方案是正确的;如果id是数字,只需在传递之前将其转换为字符串即可。

注意:对于javascript对象,这通常是正确的:o[2]将尝试查找数组的第二个元素,而o['2']将查找名为'2‘的对象属性。上面的代码不依赖于对象,但行为是相同的。

票数 1
EN

Stack Overflow用户

发布于 2020-02-04 19:04:30

我找到了问题和解决方案:

我们在数据集中使用数字id(如1,2,3,...)。在代码中的某个地方,网格变得混乱,并将错误的列映射到id :当我用grid.getHeaderRowColumn( col.id )请求div并用col.id填充它时,它显示了一个与col.id不同的id!说在同一时间内并不是所有的列都被找到是没有用的(所以不是所有的过滤器都可以设置,这是我最初的问题)。将id更改为字符串('id1','id2','id3',...)解决了问题!

我不知道这是不是一个bug,或者仅仅是动态列的不可能性,但现在只使用字符串作为id就行了。感谢@ghiscoding的帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60041045

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档