2013-02-26 2 views
0

У меня есть сценарий, который уже встречает меня, но хотели бы отправить предупредительные сигналы к моему клиенту, что-то не так, я был в состоянии изменить цвет линии на красный, я работаюизменение цвета строки в DataGrid

это может происходят в двумерных линиях, а не в последовательности. Как я могу применить этот параметр?

Ниже сценария:

<?xml version="1.0" encoding="utf-8"?> 
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"> 
<mx:Script> 
<![CDATA[ 
    import mx.controls.Alert; 
    import mx.controls.TextInput; 
    import mx.events.DataGridEvent; 
    import mx.events.DataGridEventReason; 

    [Bindable] 
    var Acumula:int = 0; 

    protected function checkInput(event:DataGridEvent):void 
    { 


     if (event.reason == DataGridEventReason.NEW_ROW || event.reason == DataGridEventReason.NEW_COLUMN) 
     { 
      var editor:TextInput = (event.currentTarget as DataGrid).itemEditorInstance as TextInput; 
      var text:String = editor.text; 
      var myEditor:TextInput = TextInput(event.currentTarget.itemEditorInstance); 


      Acumula += int(myEditor.text); 
      if(int(Acumula) > int(event.itemRenderer.data.score)) 
       {       
        Acumula = 0; 

        event.preventDefault(); 

        Alert.show(text + "ULTRAPASSOU!"); 

        return; 
       } 

     } 
    } 

]]> 
</mx:Script> 
<mx:ArrayCollection id="arrColl"> 
<mx:source> 
    <mx:Array> 
     <mx:Object label="Student A" score="85"/> 
     <mx:Object label="Student B" score="48"/> 
     <mx:Object label="Student C" score="71"/> 
     <mx:Object label="Student D" score="88"/> 
     <mx:Object label="Student E" score="24"/> 
     <mx:Object label="Student F" score="64"/> 
     <mx:Object label="Student G" score="76"/> 
     <mx:Object label="Student H" score="76"/> 
     <mx:Object label="Student I" score="93"/> 
     <mx:Object label="Student J" score="88"/> 
     <mx:Object label="Student K" score="48"/> 
     <mx:Object label="Student L" score="76"/> 
    </mx:Array> 
</mx:source> 
</mx:ArrayCollection> 
<mx:DataGrid x="10" y="28" dataProvider="{arrColl}" editable="true" itemEditEnd="checkInput(event)"> 
<mx:columns> 
    <mx:DataGridColumn headerText="Column 1" dataField="label" editable="false"/> 
    <mx:DataGridColumn headerText="Column 2" dataField="score" editable="false"/> 

    <mx:DataGridColumn headerText="Column 3" editable="true" dataField="col1"> 
     <mx:itemEditor> 
      <mx:Component> 
       <mx:TextInput restrict="0-9"/> 
      </mx:Component> 
     </mx:itemEditor> 
    </mx:DataGridColumn> 

    <mx:DataGridColumn headerText="Column 4" editable="true" dataField="col2"> 
     <mx:itemEditor> 
      <mx:Component> 
       <mx:TextInput restrict="0-9"/> 
      </mx:Component> 
     </mx:itemEditor> 
    </mx:DataGridColumn> 

    <mx:DataGridColumn headerText="Column 5" editable="true" dataField="col3"> 
     <mx:itemEditor> 
      <mx:Component> 
       <mx:TextInput restrict="0-9"/> 
      </mx:Component> 
     </mx:itemEditor> 
    </mx:DataGridColumn> 

    <mx:DataGridColumn headerText="Column 6" editable="true" dataField="col4"> 
     <mx:itemEditor> 
      <mx:Component> 
       <mx:TextInput restrict="0-9"/> 
      </mx:Component> 
     </mx:itemEditor> 
    </mx:DataGridColumn> 

    <mx:DataGridColumn headerText="Column 7" editable="true" dataField="col5"> 
     <mx:itemEditor> 
      <mx:Component> 
       <mx:TextInput restrict="0-9"/> 
      </mx:Component> 
     </mx:itemEditor> 
    </mx:DataGridColumn> 

</mx:columns> 
</mx:DataGrid> 
<mx:Label x="164" y="211" text="{Acumula}"/> 
</mx:Application> 

Чтобы проверить сценарий, например, первая строка является значением defalt идут заполнения 85 столбцов в той же строке, пока значение не больше, чем 85 будет предупреждение выдается.

на этот раз я хочу изменить цвет этой линии на красный.

ответ

0

использовать искру datagrid, который вы можете скрыть. в вашем классе кожи установите свой фон строки в зависимости от некоторого состояния. ниже код мигает, строка зависит от данного условия.

<fx:Component id="rowBackground"> 

      <s:Rect implements="spark.components.gridClasses.IGridVisualElement"> 
       <fx:Declarations> 
        <s:Animate id="myBlinkingEffect" 
           repeatCount="0" 
           repeatBehavior="reverse" 
           target="{rowBackgroundFillColor}" 
           duration="1000" 
           > 
         <s:motionPaths> 
          <s:SimpleMotionPath property="alpha" 
               valueFrom="1" 
               valueTo="0" 
               /> 
         </s:motionPaths> 
        </s:Animate> 

       </fx:Declarations> 
       <fx:Script> 
        <![CDATA[ 
         import spark.components.DataGrid; 
         import spark.components.Grid; 

         /** 
         * @private 
         */ 
         public function prepareGridVisualElement(grid:Grid, rowIndex:int, columnIndex:int):void 
         { 
          const dataGrid:DataGrid = grid.dataGrid; 
          if (!dataGrid) 
           return; 

          var item:Object; 
          if (rowIndex < grid.dataProvider.length) { 
           item = grid.dataProvider[rowIndex]; // the data item from this row 


           if (/*your condition*/){ 
            rowBackgroundFillColor.color = 0xFF0000; 
            myBlinkingEffect.play();//Blinking 
           } 

          } 

         } 
        ]]> 
       </fx:Script> 
       <s:fill> 
        <!--- @private --> 
        <s:SolidColor id="rowBackgroundFillColor" color="0xFFFFFF" alpha="0.5"/> 
       </s:fill> 
      </s:Rect> 
     </fx:Component> 
+0

Здесь, в компании, мы используем Flex 3, не можем перенести все на FLEX 4 – Eduardo

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