MultiColumn ComboBox

Категория Photoshop

Буду тут описывать код, который достаточен для простого примера использования, т.е. его можно вставить в новое приложение и вы получите работоспособный пример.Сразу оговорюсь что для примера использовался Flex 3.В качестве многостолбцового выпадающего списка у ComboBox будем использовать DataGrid. Для этого нам понадобиться его немного модифицировать.Основной класс приложения это расширенный DataGridpackage{ import mx.controls.DataGrid; import mx.controls.dataGridClasses.DataGridColumn; //основная соль нового класса это необходимый интерфейс, именно он //нужен для того чтобы наш DataGrid можно было подсунуть в качестве //выпадающего списка import mx.core.IFactory; public class DropDownGrid extends DataGrid implements IFactory { public function DropDownGrid() { super(); //нам понадобится н Буду тут описывать код, который достаточен для простого примера использования, т.е. его можно вставить в новое приложение и вы получите работоспособный пример.
Сразу оговорюсь что для примера использовался Flex 3.

В качестве многостолбцового выпадающего списка у ComboBox будем использовать DataGrid. Для этого нам понадобиться его немного модифицировать.

Основной класс приложения это расширенный DataGrid

package
{
import mx.controls.DataGrid;
import mx.controls.dataGridClasses.DataGridColumn;
//основная соль нового класса это необходимый интерфейс, именно он
//нужен для того чтобы наш DataGrid можно было подсунуть в качестве
//выпадающего списка
import mx.core.IFactory;

public class DropDownGrid extends DataGrid implements IFactory
{
public function DropDownGrid()
{
super();

//нам понадобится новая коллекция столбцов, т.к. если мы будем использовать имеющиеся, то не сможем
//расположить их в нужном порядке
var new_columns: Array = new Array();

//в данном примере у нас будет два столбца в выпадающем списке
var col1: DataGridColumn = new DataGridColumn("First Name");
var col2: DataGridColumn = new DataGridColumn("Last Name");

//задаем поля, данные которых будут отображаться в ячейках
col1.dataField = "FName";
col2.dataField = "LName";

//добавляем столбцы в новую коллекцию
new_columns.push(col1);
new_columns.push(col2);

//заменяем стандартную коллекцию DataGrid своей
this.columns = new_columns;
}

//обязательно надо реализовать этот метод
public function newInstance(): *
{
//естественно, мы будем возвращать наш новый класс
return new DropDownGrid();
}

}
}

Комментарии  

 
0 #4 sergej 25.07.2013 22:01
Надо подумать, насколько это будет удобно. Тут бы, конечно, не помешала парочка скриншотиков, как минимум. А как максимум, возможность вставки просто флеша с исходным кодом.
Возможно, так действительно будет удобнее.
Цитировать
 
 
0 #3 anton 20.07.2013 00:44
на самом деле, было бы круто, если бы еще и для наглядности демка была )),
может приложение в группу добавлять стоит?
Цитировать
 
 
0 #2 sergej 19.07.2013 12:13
Теперь, собственно, сам класс приложения.


//www.adobe.com /2006/mxml" layout="absolut e" creationComplete="Init()">


import mx.collections. ArrayCollection ;
import mx.controls.dat aGridClasses.Da taGridColumn;
import mx.controls.Dat aGrid;

private function Init(): void
{
//создаем коллекцию, которую передадим в качестве данных для нашего ComboBox
var items: ArrayCollection = new ArrayCollection ();

//создадим два тестовых элемента
var ti: TestItem = new TestItem();
var ti2: TestItem = new TestItem();

//зададим тестовые значения
ti.FName = "John";
ti.LName = "Doe";
ti.Value = "JD";


ti2.FName = "John";
ti2.LName = "Smith";
ti2.Value = "JS";

//добавим наши элементы в коллекцию
items.addItem(t i);
items.addItem(t i2);

//указываем что наш класс будет выступать в качестве выпадающего списка
cbTest.dropdown Factory = new DropDownGrid();
//задаем ширину выпадающего списка
cbTest.dropdown Width = 300;

//при выборе элемента в поле ComboBox будет отображаться одно из полей тестового класса
cbTest.labelFie ld = "LName";
//для идентификации элемента используем значение
cbTest.data = "Value";

//собственно, задаем данные
cbTest.dataProv ider = items;
}
]]>






Пишите Ваши комментарии и замечания
Цитировать
 
 
0 #1 sergej 19.07.2013 12:13
Теперь подготовим тестовый класс, который будет использоваться в качестве данных. Он простой и описывать его нет смысла.

package
{
public class TestItem
{
public function TestItem()
{
}

public var FName: String = "";

public var LName: String = "";

public var Value: String = "";
}
}
Цитировать
 

Добавить комментарий


Защитный код
Обновить