Следующий код работает отлично. Когда вы нажмете на заголовок любого столбца DataGrid
, он также установит цвет выбора для всех элементов. Затем вы можете нажать на кнопку, чтобы выбрать все элементы в столбце и нажать другую кнопку, чтобы распечатать их. Если вы снова нажмете на выбранный столбец, он удалит цвет выделения фона и также аннулирует выбранный столбец. Я вставляю полный код, который можно легко запустить в Flex. Используется Halo Datagrid
. Вы можете выполнить некоторую очистку в соответствии с вашими потребностями.
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" minWidth="955" minHeight="600"
creationComplete="application1_creationCompleteHandler(event)"
>
<mx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
import mx.controls.Alert;
import mx.controls.dataGridClasses.DataGridColumn;
import mx.events.DataGridEvent;
import mx.events.FlexEvent;
var selectedColumnItems:ArrayCollection = new ArrayCollection();
var selectedColumn:DataGridColumn;
var selectedColor:String ="0x7FCEFF";
protected function button1_clickHandler(event:MouseEvent):void
{
if(selectedColumn) {
selectedColumnItems.removeAll();
for each(var obj:Object in dg.dataProvider) {
selectedColumnItems.addItem(obj[selectedColumn.dataField]);
}
}
}
protected function button2_clickHandler(event:MouseEvent):void
{
if(selectedColumn){
for each(var obj:String in selectedColumnItems) {
Alert.show(obj);
}
}
}
protected function application1_creationCompleteHandler(event:FlexEvent):void
{
dg.addEventListener(DataGridEvent.HEADER_RELEASE, selectColumn);
}
private function selectColumn(event:DataGridEvent):void
{
//Set some background color to give the impression that the column is selected.
var existingColor:String = dg.columns[event.columnIndex].getStyle("backgroundColor");
if(existingColor == null){
selectedColumn = dg.columns[event.columnIndex];
selectedColumn.setStyle("backgroundColor", "0x7FCEFF");
}
else
{
selectedColumn = null;
dg.columns[event.columnIndex].setStyle("backgroundColor", null);
}
event.stopImmediatePropagation();
}
]]>
</mx:Script>
<mx:VBox width="100%">
<mx:DataGrid id="dg">
<mx:dataProvider>
<mx:Array>
<mx:Object age="24" sex="f" name="Susan" joinDate="{new Date(2007, 5, 15)}" />
<mx:Object age="36" sex="f" name="Ashley" joinDate="{new Date(1998, 7, 20)}" />
<mx:Object age="24" sex="f" name="Jennifer" joinDate="{new Date(2001, 3, 24)}" />
<mx:Object age="19" sex="f" name="Emma" joinDate="{new Date(2002, 3, 24)}" />
<mx:Object age="44" sex="f" name="Carol" joinDate="{new Date(1999, 9, 16)}" />
</mx:Array>
</mx:dataProvider>
</mx:DataGrid>
<mx:Button label="Copy Selected Column" click="button1_clickHandler(event)"/>
<mx:Button label="Print Selection" click="button2_clickHandler(event)"/>
</mx:VBox>
</mx:Application>
Вы используете Flex 3 или 4? Пожалуйста, убедитесь, что вы предоставили эту информацию заранее. –
Извините - я обязательно включу его в мои будущие сообщения! Я использую flex 4. Я попробую ваше решение и вернусь назад. Благодаря тонну!! – user3723584
Он должен работать с Flex 4, а просто нужно внести некоторые изменения здесь и там. –