[英]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.