Подтвердить что ты не робот

ExtJS 4.x: Как отключить красный цвет "грязной записи" в ячейках Ext.grid.Panel?

У меня есть Ext.grid.Panel(aka gridpanel) с хранилищем, используемым только для визуальных эффектов на стороне клиента (т.е. ничего не сохраняется на сервере). Когда я создаю новые экземпляры модели и добавляю их в хранилище, они отображаются в сетке с красным углом (предположительно указывая, что изменения хранилища не были сохранены).

В настоящий момент я вызываю метод .commit() для каждой записи/модели до того, как он добавлен в хранилище, чтобы предотвратить красную угловую запись в сетке.

Существует ли более общий способ простой настройки панели сетки, чтобы не отображать какие-либо визуальные индикаторы относительно "грязного" состояния записи?

Примечание: решения в этом аналогичном вопросе включают CSS или работают только для ExtJS 3. Я надеюсь найти программную "настройку", которая работает для ExtJS 4.

4b9b3361

Ответ 1

Основываясь на ответах здесь и на форумах Sencha, и, посмотрев на источник ExtJS, ответ в основном:

Нет, нет простого способа (по крайней мере, в 4.0.7) настроить сетку, чтобы не показывать красные углы без использования CSS.

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

Ответ 3

Один из вариантов заключается в том, чтобы избежать использования удаленного прокси и вместо этого использовать прокси-сервер памяти с autoSync: true, а затем загружать данные вручную вручную с помощью вызова Ext.Ajax.request.

Удаленные прокси довольно жестко закодированы, чтобы отслеживать, были ли изменения сохранены на сервере или нет.

Если вы хотите отслеживать, сохранены ли они на сервере или нет, но просто удалите визуальную индикацию с углами, используйте CSS, чтобы изменить, как выглядят "грязные" строки. Если вы хотите полностью удалить это отслеживание, не используйте удаленный прокси.

Ответ 4

У меня есть форма с флажком, который просто представляет временные данные. При проверке поля будет помечен столбец, который не имеет смысла для моей ячейки. Другие столбцы, вероятно, нуждались в грязных меток, если они не синхронизировались. Мое решение, которое вдохновляет @Roman, отвечает, но с большим контролем над тем, какие столбцы получают лечение.

В конфигурации столбца:

{
    xtype: 'checkcolumn',
    tdCls: 'no-dirty',
    dataIndex: 'selected',
    width: 50,
    text: 'Check'
},

В моем CSS

.no-dirty.x-grid-dirty-cell
{
    background-image: none;
}

Ответ 5

Это работает! Но это грязно, как для меня. Просто для быстрого решения.

.x-grid-dirty-cell {
    background-image: none;
}

Ответ 6

На самом деле, есть еще один способ программно исправить это (взлом не CSS), проверенный в ExtJS 4.2

record.modified = {};

или, более конкретно,

delete record.modified[fieldName]

Ответ 7

У меня есть аналогичная установка с хранилищем, которое поддерживается прокси-сервером localStorage. Когда я получаю грязную запись в сетке, используя этот магазин, я использую commitChanges() (здесь из ExtJS 4.2.1), чтобы синхронизировать хранилище с сетку и тем самым удалить "грязный" маркер.

Ответ 8

Ну, у меня есть решение для грязной записи,

действия:

  • установить измененное свойство записи в пустой объект;

    например. record.modified = {};

  • Это нужно сделать, прежде чем вызывать loadRecords() из ext, может быть в модели или магазине (вы можете перегрузить метод ProxyLoad() для Ext.data.Store )

Исправления:

  • грязная запись красная метка будет удалена из сетки
  • поток обновления: он будет передавать только измененные поля в вызове PUT (при грязной загрузке он передает все поля)