how to generate serial number using labelFunction in datagrid?
-
28-10-2019 - |
문제
how to generate serial number using labelFunction in datagrid?
해결책
What do mean by generating serial number? Based on what?
Edit:
<fx:Script>
private function myLabelFunc(item:Object, col:AdvancedDataGridColumn):String
{
var itemIndex:int = dataprovider.getItemIndex(item);
return itemIndex.toString();
}
<mxml>
<mx:AdvancedDataGridColumn headerText="Serial No." labelFunction="myLabelFunc"/>
다른 팁
You can try something like the following:
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:mx="library://ns.adobe.com/flex/mx"
xmlns:s="library://ns.adobe.com/flex/spark">
<fx:Script>
<![CDATA[
private function serialLabelFunction(item:String, column:DataGridColumn):String
{
var index:int = dataProvider.getItemIndex(item);
if (index > -1)
return (index + 1).toString();
return "";
}
]]>
</fx:Script>
<fx:Declarations>
<s:ArrayCollection id="dataProvider">
<s:source>
<fx:Array>
<fx:String>First</fx:String>
<fx:String>Second</fx:String>
<fx:String>Third</fx:String>
<fx:String>Fourth</fx:String>
<fx:String>Fifth</fx:String>
</fx:Array>
</s:source>
</s:ArrayCollection>
</fx:Declarations>
<mx:DataGrid dataProvider="{dataProvider}" horizontalCenter="0" verticalCenter="0">
<mx:columns>
<mx:DataGridColumn headerText="Serial" labelFunction="serialLabelFunction" />
<mx:DataGridColumn headerText="Data" />
</mx:columns>
</mx:DataGrid>
</s:Application>
My suggestion provides item current position in datagrids dataprovider. You can also add itemIndex++ to start your sn. begin from one.
Sorting does not work because there is really no data on that column. So Datagrid sorting classes cant do the trick based on nothing. You need to write your own sort function.
Use datagrid sortCompareFunction:
private function sortSerial(item1:Object, item2:Object):int
{
var value1:int = arrayCollectionn.getItemIndex(item1);
var value2:int = arrayCollectionn.getItemIndex(item2);
if (value1 < value2) {
return -1;
} else if (value1 > value2) {
return 1;
} else {
return 0;
}
}
mxml
<mx:AdvancedDataGridColumn headerText="Serial No." labelFunction="myLabelFunc" sortCompareFunction="sortSerial"/>
제휴하지 않습니다 StackOverflow