15

我想隐藏一列(它是每一行唯一的 ID 列),但我无法将其从“列”数组中删除,因为当对行执行操作时,我需要行中的数据(选择,排序等)。

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

谢谢。

4

8 回答 8

13

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

除了查看哪些列来获取其数据之外,它们与您的数据项的外观之间没有硬链接。您不必有可见的列才能在数据项上具有 ID。

于 2011-06-16T16:10:15.813 回答
7

万一有人还在寻找这个,我找到了一种方法......它不是非常优雅,但它确实有效。正如 Simon 建议的那样,将 Id 列添加为网格中的最后一个。将 cssClass 和 headerCssClass 都设置为“display:none !important”,并将 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 { 显示:无!重要;}

希望有帮助。

于 2013-11-26T15:33:40.533 回答
1

这是不可能的,但作为一种解决方法,您可以将宽度/最大宽度设置为 1,将名称设置为空字符串并将该列放在所有其他列的最右侧。像这样(示例在 coffeescript 中,如果您对语法不确定,请使用http://js2coffee.org/):

columns = [

          ... some columns ...

            {
               id:"hidden"
               name:""
               field:"id"
               sortable:"true"
               width: 1
               maxWidth: 1
               minWidth: 1
               unselectable: true
               formatter: (row,cell,val,columnDef,dataContext) ->
                  "<div style='display: none;'>#{val}</div>"
            }
         ]
于 2011-10-31T11:11:48.090 回答
0

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

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);
于 2013-10-01T09:34:12.217 回答
0

in coloumns.push({id:id,name:name,Hidden:true}) //hidden 确保在绑定网格时删除该列

于 2014-06-11T08:54:22.817 回答
0

我意识到这是一个老问题,但正确的方法是使用 dataProvider 并利用 getItemMetaData 提供您不一定希望显示的信息。

当你选择你的行时,你可以调用 grid.getItemMetaData(cell.row) 来获取你需要的额外信息。getItemMetaData 应返回描述行和单元级别元数据的 jsonObject。

这是描述它的文档。

https://github.com/mleibman/SlickGrid/wiki/Providing-data-to-the-grid

于 2018-01-04T15:23:05.013 回答
0

在寻找有关此问题的一些答案后,我找到了一种解决方法,它可以很好地隐藏列并仍然保存数据。

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

于 2018-09-21T09:43:37.623 回答
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'
        }
    ]
    , {}
);

正如您在代码中看到的,我向网格提供了第 4 个值,没有列定义。

于 2019-12-19T16:09:39.550 回答