2015-05-06 3 views
-2

У меня есть datagrid, и я пытаюсь разрешить пользователю нажимать кнопку, чтобы выбрать конкретный столбец моего dataGrid. Я пытаюсь выбрать конкретный столбец, чтобы пользователь мог затем скопировать и вставить его в excel. Я могу выбрать все столбцы и строки, но хочу только определенного coloumn. Если у кого-то есть предложения, это было бы потрясающе - спасибо!Flex Datagrid - как сделать множественный выбор программным способом (только столбец)

protected function button1_clickHandler(event:MouseEvent):void 
     { 
      // TODO Auto-generated method stub 
      var indexArr:Array = []; 

      for(var i:int=0; i<budgetGrid.dataProvider.length; i++) { 
       indexArr.push(i); 
      } 
      budgetGrid.selectedIndices= indexArr; 

     } 
+0

Вы используете Flex 3 или 4? Пожалуйста, убедитесь, что вы предоставили эту информацию заранее. –

+0

Извините - я обязательно включу его в мои будущие сообщения! Я использую flex 4. Я попробую ваше решение и вернусь назад. Благодаря тонну!! – user3723584

+0

Он должен работать с Flex 4, а просто нужно внести некоторые изменения здесь и там. –

ответ

0

Следующий код работает отлично. Когда вы нажмете на заголовок любого столбца 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> 
+0

Печатные работы. Однако, когда я пытаюсь скопировать и вставить, я получаю [Bindable] общедоступный – user3723584

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