簡體   English   中英

以編程方式檢查Spark DataGrid單元格的內容?

[英]Check Spark DataGrid cells' contents programmatically?

我第一次使用Spark DataGrid,發現它通常非常實用。 現在我已經繪制了我的網格內容,我想要做些什么,而且我有點卡住了如何繼續。

我想創建一個遍歷DataGrid中某個列的每個單元格的函數,它根據預定義的數組值檢查每個值。 如果找到匹配,則應通過更改其顏色將該單元格突出顯示為沖突。

我知道你可以通過使用getItemRendererAt()函數訪問特定單元格的項目渲染器,並傳遞列和行索引。 但我無法看到我將如何循環遍歷每列中的值。

我可能會把這一切都弄錯,在這種情況下,請隨意把我推到正確的道路上。 同樣,如果我可以做我想做的事情,我也很樂意聽到。

謝謝!

實際上,您應該創建自己的<s:GridItemRenderer />並將其用作dataGrid的itemRenderer。

這樣,您就可以根據<s:GridItemRenderer />data屬性更改單元格的顏色。

以下是如何執行此操作的示例:

<?xml version="1.0" encoding="utf-8"?>
<s:GridItemRenderer xmlns:fx = "http://ns.adobe.com/mxml/2009" 
   xmlns:s = "library://ns.adobe.com/flex/spark" 
   xmlns:mx = "library://ns.adobe.com/flex/mx" >

    <fx:Script>
        <![CDATA[
        private function isValid(value:uint):Boolean
        {
            //whatever;
            return true;
        }

        ]]>
    </fx:Script>

    <s:BorderContainer width="100%" height="100%">
        <s:borderStroke>
            <s:SolidColorStroke color="{isValid(data)?#00FF00:#FF0000}" />
        </s:borderStroke>
        <s:UITextField label="{data}" />
    </s:BorderContainer>

</s:GridItemRenderer>

使用上面的示例,還可以覆蓋“設置數據”以在每次更改數據時更改顏色,而不僅僅是在網格創建時

<?xml version="1.0" encoding="utf-8"?>
<s:GridItemRenderer xmlns:fx = "http://ns.adobe.com/mxml/2009" 
                xmlns:s = "library://ns.adobe.com/flex/spark" 
                xmlns:mx = "library://ns.adobe.com/flex/mx"  >

<fx:Script>
    <![CDATA[
        import mx.controls.ColorPicker;
        import mx.events.FlexEvent;
        import mx.utils.ColorUtil;

        override public function set data(value:Object):void{
            super.data = value;

            if(data.different == 1){
                solidColor.color = 255;
            }
        }

    ]]>
</fx:Script>

<s:BorderContainer width="100%" height="100%">
    <s:borderStroke>
        <s:SolidColorStroke   id="solidColor" />
    </s:borderStroke>
    <s:UITextFieldGridItemRenderer label="{data.name}" />
</s:BorderContainer>
</s:GridItemRenderer>

然后接下來的步驟很簡單,從datagrid克隆你的dataProvider,然后比較兩者,如果項目被更改,只需將“1”設置為例如上面示例中的“不同”標志,然后itemRenderer將調用本身並自動改變顏色

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM