2012-04-12 2 views
0

Есть ли способ разместить флажок и 2 поля чисел в одном столбце? Нечто подобноеExtJs: объекты с несколькими формами в ячейке сетки

 
+-----------------------+-----------------------+ 
|  Column 1  |  Column 2  | 
+-----------------------+-----------------------+ 
|      | CB  NF  NF | 
+-----------------------+-----------------------+ 
|      | CB  NF  NF | 
+-----------------------+-----------------------+ 
|      | CB  NF  NF | 
+-----------------------------------------------+ 

ответ

3

«Стандартный» метод включает использование функции для редактирования шаблона строки/столбца, чтобы включать в себя дивы с идентификаторами, а затем рендеринга компонентов в этих дивы с renderTo конфигурации. Однако, поскольку вы работаете по столбцу, а не по строке, вы можете использовать более простой подход.

В вашей колонке конфигурации, используйте пользовательский визуализатор, как это:

// May not be exact, I just came up with this on the spot 
renderer: function(value, metaData, record, rowIdx, colIdx, store, view) { 
    return [ 
     "<div id='combobox_", rowIdx, "'></div>", 
     "<div id='numberfield_1_", rowIdx, "'></div>", 
     "<div id='numberfield_2_", rowIdx, "'></div>" 
    ].join(""); 
} 

Так что теперь каждую ячейку в этом столбце имеет три дивы с уникальными идентификаторами (вам, возможно, придется заменить «rowIdx» с каким-либо другим способом идентификация, как record.id). Тогда вам решать создать компоненты и сохранить их.

Обратите внимание, что refresh метода зрения сетки будет вызываться каждый раз, когда обновление сетки, включая сортировку, фильтрацию, скрывая столбцы, и т.д. Таким образом, вы должны следить за afterrefresh события или что-то подобное и повторно сделать ваши компоненты по мере необходимости. Чтобы обмануть рендер-компонент в повторный рендеринг, используйте myComponent.rendered = false; myComponent.render();, и он должен работать.

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

+0

спасибо Эрик. Это очень помогает! –

+0

Мне только пришло в голову, что вы можете сделать один div вместо трех и создать собственный класс «Контейнер», который содержит ваши три компонента. Быть быстрее, может быть проще поддерживать. – Eric

Смежные вопросы