#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 Они предоставили опции отключения редактирования ячеек, редактирования строк, редактирования столбцов.