Самый простой способ сделать это в разделе - это заместить обьект и добавить к нему целочисленное поле, в котором динамически проставлять нумерацию. Можно сделать и добавление колнки динамически, а не через обьект, но это намного сложнее и может привести к проблемам в некоторых разделах. Например, к разделу "Контакт" добавим поле с именем UsrRowNumber. Для этого после добавления поля к обьекту "Контакт" нужно настроить отображение колонок и вывести новосозданное поле. А потом на странице раздела ContactPageV2 переопределить метод onGridDataLoaded, чтобы получилось примерно такое:
onGridDataLoaded: function(){this.callParent(arguments);for(var i =0; i <this.getGridData().collection.items.length; i++){
var itemId =this.getGridData().collection.items[i].get("Id");this.getGridData().get(itemId).set("UsrRowNumber", (i +1));}},
Таким образом, будет работать нумерация в разделе "Контакты". Скорее всего вам не нужна будет сортировка по этой колонке реестра, так как это не даст никакой сортировки. В этом случае можно переопределить также метод sortColumn, в котором проверять какая колонка сейчас будет отсортирована и не сортировать, если это колонка UsrRowNumber. Как пример:
sortColumn: function(index){
var columnsSettingsProfile =this.get("Profile");
var columnsConfig = columnsSettingsProfile.DataGrid.listedConfig;
var columnName;if(!Ext.isEmpty(columnsConfig)){
var columns =this.Ext.decode(columnsConfig);
var column = columns.items[index];
columnName = column.bindTo;}if(columnName !=="UsrRowNumber"){this.callParent(arguments);}}
Тогда при нажатии на заголовок колонки UsrRowNumber в реестре ничего не произойдет, а во всех других случаях все будет работать.
Если же говорить про детали, то тут немного проще динамически добавить колонку. Можно попробовать перехватить Profile детали в котором находятся конфиги на отображение в списочном и плиточном отображении (listedConfig и tiledConfig).
К примеру в методе initProfile после вызова this.callParent(arguments) взять this.get("Profile") и динамически изменить listedConfig (или tiledConfig) для изменения конфигурации колонок грида. Сначала конфиг нужно распарсить (можно использовать либо Ext.decode, либо JSON.parse), модифицировать как вам необходимо и вернуть орбатно с помощью this.set("Profile", newProfile).
Может и пойдет такое, но хотят чтобы это было в каждом раздели и детали, представление только списком будет. Без создания колонки в объекте можно сделать? Динамически нужно)
Чтобы сделать сразу на всех деталях нужно делать перехват Profile как описано выше, но этот перехват делать на базовой клиентской схеме детали грида (например, BaseGridDetailV2) и тогда все будет работать для всех деталей, которые от него наследуются.
То же самое можно сказать и для раздела, но там все сложнее. Модифицировать придется также базовый раздел BaseSection, но тут нет метода initProfile, поэтому сложнее динамически модифицировать колонки.