Javascript 是否可以在不从“列”数组中删除的情况下隐藏SlickGrid列?

Javascript 是否可以在不从“列”数组中删除的情况下隐藏SlickGrid列?,javascript,slickgrid,Javascript,Slickgrid,我想隐藏一个列,它的ID列对于每一行都是唯一的,但我无法将其从columns数组中删除,因为当对行选择、排序等执行操作时,我需要该行中的数据 例如,在排序之后,我需要获取与以前的样式相匹配的行,我可以使用ID列来实现这一点。我需要行中的数据,我只是不想显示它 谢谢。答案是否定的,但这不是你想要的答案: 除了列正在查看哪些内容以获取其数据之外,它们与您的数据项之间没有硬链接。你不必有一个列,它可以在数据项上有一个ID。< P>这是不可能的,但是作为一个解决方案,你可以将宽度/Max宽度设置为1,将

我想隐藏一个列,它的ID列对于每一行都是唯一的,但我无法将其从columns数组中删除,因为当对行选择、排序等执行操作时,我需要该行中的数据

例如,在排序之后,我需要获取与以前的样式相匹配的行,我可以使用ID列来实现这一点。我需要行中的数据,我只是不想显示它


谢谢。

答案是否定的,但这不是你想要的答案:


除了列正在查看哪些内容以获取其数据之外,它们与您的数据项之间没有硬链接。你不必有一个列,它可以在数据项上有一个ID。

< P>这是不可能的,但是作为一个解决方案,你可以将宽度/Max宽度设置为1,将名称设置为空字符串,并将列放置在所有其他列的最右边。与coffeescript中的示例类似,如果您对语法使用感到不确定,请执行以下操作:


对于这类问题,我使用了两个数组。一个用于显示,另一个用于列选择器。这里是如何

var org_columns = [],hid_columns = [];
org_columns.push(
cb_selector.getColumnDefinition(),
{id: "id", name: "ID", field: "id", sortable: true, width: 56},
{id: "name", name: "Name", field: "name", editor: Slick.Editors.Text, sortable: true, width: 234},
{id: "email", name: "Email", field: "email", editor: Slick.Editors.Text, sortable: true, width: 234}
);

hid_columns.push(
cb_selector.getColumnDefinition(),
{id: "name", name: "Name", field: "name", editor: Slick.Editors.Text, sortable: true, width: 234},
{id: "email", name: "Email", field: "email", editor: Slick.Editors.Text, sortable: true, width: 234}
);
var data_view = new Slick.Data.DataView();
grid = new Slick.Grid("#grid", data_view, hid_columns, grid_options);
var columnPicker= new Slick.Controls.ColumnPicker(org_columns, grid,grid_options);

如果有人还在找这个,我找到了一个方法。。。它不是非常优雅,但确实有效。按照Simon的建议,添加Id列作为网格中的最后一个。将cssClass和HeaderCSClass都设置为显示:无!重要信息,并将width、minWidth和maxWidth列选项设置为0,如下所示:

var columns = [
    { id: "MyColumnId", name: "My Column", field: "MyColumnData", width: 100},
    { id: "Id", name: "Id", field: "Id", width: 0, minWidth: 0, maxWidth: 0, cssClass: "reallyHidden", headerCssClass: "reallyHidden" }
];
css是:

.reallyHidden{显示:无!重要;}


希望有帮助。

在冒号中。按{id:id,name:name,Hidden:true}
//hidden确保在绑定网格时删除列

我知道这是一个老问题,但正确的方法是使用数据提供程序并利用getItemMetaData提供您不一定希望显示的信息

选择行时,可以调用grid.getItemMetaDatacell.row以获取所需的额外信息。getItemMetaData将返回一个jsonObject,描述行级和单元级元数据

下面是描述它的文档


在寻找了一些关于这个问题的答案之后,我找到了一个解决方法,它完全可以隐藏列并仍然保存数据


我最初的问题是,我需要隐藏网格的ID列,因此基本上我通过使用name属性创建only来隐藏ID列,而不指定任何其他内容,然后创建了我期望的列。

我今天也遇到了同样的问题,我正在处理纯数组数据。如果在数据数组的末尾添加值,但未在列数组中定义值,则数据将显示,并且可以在事件中使用,但不会显示

例如:

new Slick.Grid({
    document.getElementById('grid')
    , [
        [1, 2, 3, 1]
        , [1, 2, 3, 2]
        , [1, 2, 3, 3]
        , [1, 2, 3, 4]
        , [1, 2, 3, 5]
    ]
    , headers: [
        {
            field: '0'
            , id: 'foo'
            , name: 'foo'
        }
        , {
            field: '1'
            , id: 'bar'
            , name: 'bar'
        }
        , {
            field: '0'
            , id: 'baz'
            , name: 'baz'
        }
    ]
    , {}
);

正如您在代码中看到的,我在没有列定义的情况下为网格提供了第四个值。

对不起,我不完全理解您的意思。如果该列被隐藏(又称为隐藏)而不是在行中,我如何从行的数据中获取ID。将网格绑定到数据数组:var data=[{ID:0,title:'item1'},{ID:1,title:'item3'},…];如果您选择不显示ID列,则数据项上仍有数据。我尝试了您所说的,并将我的附加信息存储在data[]中,这很好,但我仍然不知道如何在事件发生后将该数据匹配到相应的行,例如,排序已经发生。是否可以将一行与其数据[]项匹配?对于那些想知道如何将网格上的行转换为数据中正确的行的人,这里是:alertdata[args.Row].id假设数据中有id,简单的答案是省略列定义。这绝对正确。我注意到我不需要CSS,但我还在grid.render之后使用gird.autosizeColumns。也许这与此有关?调整列的大小将使标题和单元格值稍微对齐。若要解决调整大小问题,请转到slick.grid.js中的applyColumnWidths,并添加以下ifcolumns[i]。minWidth==0&&columns[i]。maxWidth==0{columns[i].width=0;}。元数据中有选项,但如何以这种方式隐藏列?这样我得到了一个空白列,但仍然可见。@Geeocode尝试将列宽设置为最小宽度0。
new Slick.Grid({
    document.getElementById('grid')
    , [
        [1, 2, 3, 1]
        , [1, 2, 3, 2]
        , [1, 2, 3, 3]
        , [1, 2, 3, 4]
        , [1, 2, 3, 5]
    ]
    , headers: [
        {
            field: '0'
            , id: 'foo'
            , name: 'foo'
        }
        , {
            field: '1'
            , id: 'bar'
            , name: 'bar'
        }
        , {
            field: '0'
            , id: 'baz'
            , name: 'baz'
        }
    ]
    , {}
);