Можно скрыть столбец SlickGrid БЕЗ удаления его из массива "столбцы"?

Я хотел бы скрыть столбец (его уникальный столбец, который уникален для каждой строки), но я не могу удалить его из массива "столбцы", потому что мне нужны эти данные в строке, когда действия выполняются в строке (Выбор, Сортировка, ect).

После сортировки, например, мне нужно, чтобы строки соответствовали их предыдущим стилям, которые у них были до этого, и я могу сделать это с помощью столбца ID. Мне нужны данные в строке, я просто не хочу, чтобы она отображалась.

Спасибо.

Ответ 1

Ответ НЕТ, но это не тот ответ, который вы ищете:)

Помимо того, какие столбцы ищут для захвата своих данных, между ними нет жесткой связи и то, как выглядят ваши элементы данных. Вам не нужно иметь видимый столбец, чтобы иметь идентификатор в элементе данных.

Ответ 2

В случае, если кто-то все еще ищет это, я нашел способ... он не массивно изящный, но он действительно работает. Как предложил Саймон, добавьте столбец Идентификатор в качестве последнего в сетке. Задайте как cssClass, так и headerCssClass как "display: none! Important" и установите для столбцов ширины, 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 {display: none! important;}

Надеюсь, что это поможет.

Ответ 3

Это невозможно, но в качестве обходного пути вы можете установить ширину /maxWidth равным 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>"
            }
         ]

Ответ 4

Для этой проблемы я использовал два массива. Один для показа, а другой для столбца. Вот как,

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);

Ответ 5

в coloumns.push({id: id, name: name, Hidden: true}) //hidden гарантирует, что столбец удален при привязке сетки

Ответ 6

Я понимаю, что это старый вопрос, но правильный способ сделать это - использовать dataProvider и использовать getItemMetaData для предоставления информации, которую вы не обязательно хотите отображать.

Когда вы выбираете свою строку, вы можете вызвать grid.getItemMetaData(cell.row), чтобы получить дополнительную информацию, которая вам нужна. Ожидается, что getItemMetaData вернет jsonObject, описывающий метаданные уровня и ячеек.

Здесь описываются документы, описывающие его.

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