понедельник, 11 апреля 2011 г.

ExtJS выделить строку в таблице grid

Проблема: выделить одну строку (например, первую) в таблице grid сразу после ее загрузки. Казалось бы, проблемы как таковой здесь нет - получили SelectionModel таблицы и сделали selectRow(rowIndex). По сути - все действительно так, однако необходимо выбрать нужный момент для выполнения этого кода. Попробуйте, например, выделить строку в событии afterrender или render - увы, выделение не сработает. Решение, тем не менее, безусловно есть.

Решение: необходимо воспользоваться событием viewready, возникающим, когда таблица grid полностью отрисована на странице и готова к манипуляциям. Как гласит документация, viewready используется как раз для осуществления выделения строки по умолчанию.

Предположим, что нам нужно выделить первую строку таблицы:

grid = new Ext.grid.EditorGridPanel({
  store: myStore,
  height: 500,
  border: false, frame: false,
  cm: myColumnModel,
  selModel: new Ext.grid.RowSelectionModel({singleSelect:true}),
  listeners: {
    viewready: function(g){
      g.getSelectionModel().selectRow(0);
    }
  }

Обратите внимание, что в случае необходимости использования так называемой модели выделений SelectionModel необходимо явно указывать selModel в конфигурации таблицы, в противном случае вызов метода grid.getSelectionModel() вызовет ошибку.

4 комментария:

  1. Друг, спасибо. Пришлось поддерживать старый проект и спустя 7 лет твоя подсказка помогла!
    Видится мне, что проблема немного в другом:
    EditorGridPanel наследуется от Ext.grid.GridPanel причем не переносит некоторые свойства, в частности selectRow().
    В твоем примере ты просто корректируешь модель грида Ext.grid.RowSelectionModel - singleSelect:true.
    В дельнейшем пример работает и без блока viewready.
    См fiddle: https://fiddle.sencha.com/#view/editor&fiddle/2n8m
    строка 69ю

    ОтветитьУдалить
  2. Your car could be stolen if you don't keep this in mind!

    Imagine that your car was taken! When you approach the police, they inquire about a specific "VIN decoder"

    A VIN decoder: What is it?

    Similar to a passport, the "VIN decoder" allows you to find out when the car was born and who its "parent"( manufacturing plant) is. Additionally, you can find:

    1.The type of engine

    2.Model of a car

    3.The DMV's limitations

    4.The number of drivers in this vehicle

    The location of the car will be visible to you, and keeping in mind the code ensures your safety. The code can be viewed in the online database. The VIN is situated on various parts of the car to make it harder for thieves to steal, such as the first person's seat on the floor, the frame (often in trucks and SUVs), the spar, and other areas.

    What happens if the VIN is harmed on purpose?

    There are numerous circumstances that can result in VIN damage, but failing to have one will have unpleasant repercussions because it is illegal to intentionally harm a VIN in order to avoid going to jail or the police. You could receive a fine of up to 80,000 rubles or spend two years in prison. You might be stopped on the road by a teacher.

    Conclusion.

    The VIN decoder may help to save your car from theft. But where can you check the car reality? This is why we exist– VIN decoders!

    ОтветитьУдалить
  3. Для того, чтобы иметь право рулить погрузчиком, надо пройти высококачественное обучение и успешно сдать экзамены, подтверждающие знания в данной области. Права тракториста-машиниста предоставляется в Гостехнадзоре и в обязательном порядке для тех, кто планирует трудиться на специальной технике - получить права на погрузчик

    ОтветитьУдалить