Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 将特定的Datagrid行始终放在末尾-也包括排序_Actionscript 3_Apache Flex_Datagrid - Fatal编程技术网

Actionscript 3 将特定的Datagrid行始终放在末尾-也包括排序

Actionscript 3 将特定的Datagrid行始终放在末尾-也包括排序,actionscript-3,apache-flex,datagrid,Actionscript 3,Apache Flex,Datagrid,我被困在以下问题上: 我有一个包含10项的datagrid。。。我还添加了一个额外的行(第11行),其中显示了prevouis字段的总数。。。但是我总是想把最后一行(总数)放在数据网格的最后一行(所以总是放在第11位) 这意味着,当datagrid按列排序时,最后一行的位置也会根据datafield中的值发生变化。有没有简单明了的方法防止它与其他列一起排序,从而使包含总计的列始终排在最后?或者,我最好使用什么方法 谢谢你的帮助

我被困在以下问题上:

我有一个包含10项的
datagrid
。。。我还添加了一个额外的行(第11行),其中显示了prevouis字段的总数。。。但是我总是想把最后一行(总数)放在数据网格的最后一行(所以总是放在第11位)

这意味着,当datagrid按列排序时,最后一行的位置也会根据datafield中的值发生变化。有没有简单明了的方法防止它与其他列一起排序,从而使包含总计的列始终排在最后?或者,我最好使用什么方法


谢谢你的帮助
  • 将您的摘要数据放在其他地方。这并不是datagrid中一行的目的
  • 如果确实不希望用户对数据进行排序,则不要让用户通过单击列名(sortableColumns='false')进行排序
  • 为每列创建自定义排序,以确保始终将摘要数据放在最后。这里有一个不错的教程:。我想强调的是,这将是一个高维护性的想法,因为您必须为每个列构建自定义排序

  • 请查找下面的代码希望这可能对您有所帮助,我尝试了一些变通方法来实现您所寻找的目标,我不确定此代码是否可行:-

    <?xml version="1.0" encoding="utf-8"?>
    <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
                   xmlns:s="library://ns.adobe.com/flex/spark" 
                   xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600"
                   >
        <fx:Declarations>
            <!-- Place non-visual elements (e.g., services, value objects) here -->
        </fx:Declarations>
        <fx:Script>
            <![CDATA[
                import mx.collections.ArrayCollection;
                import mx.events.FlexEvent;
    
                [Bindable]
                private var dpHierarchy:ArrayCollection= new ArrayCollection([
                    {name:"A", region: "Arizona", number:1},
                    {name:"B", region: "Arizona", number:2},
                    {name:"C", region: "California", number:3},
                    {name:"D", region: "California", number:4}
                ]); 
    
                private function creationComp():void
                {
                    var totalValue:int = 0;
                    for(var i:int=0; i<dpHierarchy.length; i++)
                    {
                        totalValue = totalValue + dpHierarchy[i].number;
                    }
                    var obj:Object = new Object();
                    obj.name = "Total";
                    obj.region = "==";
                    obj.number = totalValue;
                    dpHierarchy.addItem(obj)
                    myADG.dataProvider = dpHierarchy;
                }
    
                private function sortHandler(obj1:Object, obj2:Object):int
                {
                    var lastObj:Object = dpHierarchy.getItemAt(dpHierarchy.length-1);
    
                    if(lastObj.number == obj1.number || lastObj.number == obj2.number)
                        return 0;
    
                    if(obj1.number < obj2.number) {
                        return -1;
                    } else if(obj1 == obj2) {
                        return 0;
                    }
                    return 1;
                }
            ]]>
        </fx:Script>
    
        <mx:AdvancedDataGrid id="myADG" x="50" y="50"
                             width="400" height="300" 
                             variableRowHeight="true" creationComplete="creationComp()">
            <mx:columns>
                <mx:AdvancedDataGridColumn dataField="name" headerText="Name" sortCompareFunction="sortHandler"/>
                <mx:AdvancedDataGridColumn dataField="region" headerText="Region" sortCompareFunction="sortHandler"/>
                <mx:AdvancedDataGridColumn dataField="number" headerText="Number" sortCompareFunction="sortHandler"/>
            </mx:columns>   
    
        </mx:AdvancedDataGrid>
    
    </s:Application>
    
    
    
    我想您可以编写一个自定义比较函数,它总是将某个值放在最后,然后将其分配给
    GridColumn\sortcomparencation
    。谢谢您的代码!这真的为最佳方法提供了一个好主意!