как пометить строки как доступные только для чтения в сетке extjs4?

#grid #extjs4

#сетка #extjs4

Вопрос:

как я могу заблокировать строки в редактируемой сетке?

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

Ответ №1:

Чтобы добавить символ в строку в зависимости от поля строки (записи), вы можете использовать средство визуализации для этого столбца или новый столбец символов, что-то вроде этого :

 columns : [{
    header : 'Locked',
    dataIndex : 'locked',
    renderer : function(value, metaData, record, rowIndex, colIndex, store, view) {
        if (record.data.locked == true) {
            return '<img src="img/lockedIcon.jpg">';
        } else {
            return '<img src="img/freeIcon.jpg">';
        }
     }
}]
  

Чтобы избежать редактирования строки, вы можете зарегистрироваться в событии beforedit плагина editor. Чтобы предотвратить редактирование, просто отмените событие как-то так:

 onBeforeEdit : function(object, options) {
    if (object.record.locked == true) {
        return false;
    } else {
        // do what is needed to start editing
    }
}
  

Редактировать: вы также можете использовать параметр хранилища вместо поля записи, но это сделало бы сетку блокировки широкой, а не для каждой строки.

Комментарии:

1. Спасибо за ответ suknic, я уже реализовал с использованием того же механизма. тем не менее, я нашел несколько способов добиться того же в sencha guid — sencha.com/learn/grid-faq Они предоставили опции отключения редактирования ячеек, редактирования строк, редактирования столбцов.