AS3数据网格-隐藏行

基兰·奎因(Kieran Quinn)

我正在使用2个组合框来筛选已通过csv文件填充的dataGrid。第一个组合框过滤列并正常工作:

//Listener and function for when the Agreement ID is selected
agreement_cb.addEventListener(Event.CHANGE, agreement);
function agreement(event:Event):void 
{
    //get the number of columns 
    var columnCount:Number = myGrid.getColumnCount();

    for (var i:int=0; i<columnCount; i++)
    {
        myGrid.getColumnAt(i).visible = false;
    }
    var columnNumber:Number = agreement_cb.selectedItem.data;
    myGrid.getColumnAt(columnNumber).visible = true;
    myGrid.getColumnAt(0).visible = true;
    myGrid.columns[0].width = 200;
}

但是,除了如何从第二个下拉列表中选择的行(codes_cb)之外,我无法找到任何方法来隐藏所有行。

任何帮助表示赞赏...

更新:

loadedData = myLoader.data.split(/\r\n|\n|\r/);
    loadedData.pop();
    for (var i:int=0; i<loadedData.length; i++)
    {
        var rowArray:Array = loadedData[i].split(",");
        loadedData[i] = {"SelectAgreement":rowArray[0],"KSLTPROF0057":rowArray[1] .........};
    }
    loadedData.shift();
    myGrid.columns = ["SelectAgreement", "KSLTPROF0057", ......];

    import fl.data.DataProvider;
    import fl.controls.dataGridClasses.DataGridColumn;

    myGrid.dataProvider = new DataProvider(loadedData);
蓝天使

ADataGrid始终显示其中的所有对象dataProvider,因此要隐藏行,您需要隐藏数据对象。某些与dataProviders一起工作的类具有内置的功能,这使得这变得非常容易(实现的任何类IList都可以作为来操作dataProvider),但是fl.data.DataProvider不是这些类之一。

因此,如果可以的话,我会同时使用这两种方法提供答案,我强烈建议您使用mx.collections.ArrayCollectionover fl.data.DataProvider


第1节: fl.data.DataProvider

为此,我假设您的loadedData数组是一个类属性,未在函数中声明。

function agreement(event:Event):void 
{
//your existing code here
    var dataProvider:DataProvider = MyGrid.dataProvider as DataProvider;//recover the dataprovider
    dataProvider.removeAll();//remove all rows
    for (var x:int = 0; x<loadedData.length; x++)
    {
        if (loadedData[x] == "SELECTION MATCH") //insert here your selection criteria
        {
           dataProvider.addItem(loadedData[x]); //add it back into the dataProvider
        }
    }
}
function resetFilter():void
{
    var dataProvider:DataProvider = MyGrid.dataProvider as DataProvider;//recover the dataprovider
    dataProvider.removeAll(); //prevent duplication
    dataProvider.addItems(loadedData);//reload all rows
}

第2节: mx.collections.ArrayCollection

我之所以建议这样做,是因为ArrayCollection已经具有执行此操作的功能,而不会因对象丢失作用域而丢失数据的风险,它还减少了您需要执行的代码/操作的数量。为此,我们使用ArrayCollection.filterFunctionArrayCollection.refresh()过滤“可见数组”而不更改源。

private var dataProvider:ArrayCollection = new ArrayCollection(loadedData);
MyGrid.dataProvider = dataProvider;
function agreement(event:Event):void
{
    //your existing code here
    dataProvider.filterFunction = myFilterFunction;//use my filter
    dataProvider.refresh();//refresh the visible list using new filter/sort
}
function resetFilter():void
{
    dataProvider.filterFunction = null;//clear filter
    dataProvider.refresh();//refresh the visible list using new filter/sort
}
function myFilterFunction(item:Object):Boolean
{
    if (item == "SELECTION MATCH") return true;//insert your selection criteria here        
    else return false;
}

filterFunction接受afunction并将其用于测试中的每个对象ArrayCollection,该函数必须返回一个布尔值,即true“是,显示此对象”和false“不显示”。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在AS3中获取翻转时数据网格组件的索引

来自分类Dev

WPF根据条件在数据网格中隐藏行

来自分类Dev

使用Visual Basic在数据网格中隐藏行

来自分类Dev

如何隐藏/显示数据表中的行?

来自分类Dev

隐藏网格中的行

来自分类Dev

数据表隐藏行

来自分类Dev

如何根据隐藏的数据值隐藏多列的行

来自分类Dev

如何在WPF数据网格的“新行”模板中隐藏按钮?

来自分类Dev

在农业网格聚合/行分组中隐藏行数

来自分类Dev

根据数据库中的行隐藏控件

来自分类Dev

在AS3中获取翻转时数据网格组件的索引

来自分类Dev

隐藏数据库查询中的第一行

来自分类Dev

如何防止Highstock隐藏数据行

来自分类Dev

如何使as3高级数据网格的最后一行可编辑,而其他所有行都不可编辑

来自分类Dev

如何以编程方式隐藏已经存在的网格的特定行

来自分类Dev

数据透视表:隐藏两列不为空的行

来自分类Dev

当表行少于3时隐藏空<div>

来自分类Dev

从HTML表格中提取特定数据或隐藏特定行

来自分类Dev

使行可点击的jQuery数据表,也隐藏行

来自分类Dev

GXT 4.0在网格中的特定行中隐藏TextButtonCell

来自分类Dev

XAML C#隐藏网格行

来自分类Dev

隐藏特定行上的AS3弃用警告

来自分类Dev

网格行隐藏子元素其他元素

来自分类Dev

数据网格行模板中的数据网格

来自分类Dev

数据表根据列值隐藏行

来自分类Dev

当数据与搜索条件不匹配时隐藏行

来自分类Dev

是否可以隐藏所有重复数据行?

来自分类Dev

如何隐藏行中没有数据的行

来自分类Dev

当单击一行数据网格中的按钮时,另一行隐藏按钮