Actionscript 3 是否删除AdvancedDataGrid中的行?

Actionscript 3 是否删除AdvancedDataGrid中的行?,actionscript-3,flex4,Actionscript 3,Flex4,我有一个AdvancedDataGrid,我想在单击按钮时删除该行。 我的代码是 [Bindable] private var sales:ArrayCollection = new ArrayCollection([ {Sno:"1",categoryName:"biscuits", description:"salt"}, {Sno:"2",categoryName:"biscuits",

我有一个AdvancedDataGrid,我想在单击按钮时删除该行。 我的代码是

[Bindable]
        private var sales:ArrayCollection = new ArrayCollection([
            {Sno:"1",categoryName:"biscuits", 
                description:"salt"}, 
            {Sno:"2",categoryName:"biscuits", 
                description:"cream"}, 
            {Sno:"3",categoryName:"sweets", 
                description:"less sweet"}, 
            {Sno:"4",categoryName:"sweets", 
                description:"normal sweet"}, 
            {Sno:"5",categoryName:"fruits", 
                description:"healthy "}, 
            {Sno:"6",categoryName:"fruits", 
                description:"sweetfruits"}]);
private function deleteRows():void{

            sales.removeItemAt(myADG1.selectedIndex);
        }
我的网格是

<mx:AdvancedDataGrid id="myADG1" width="100%" height="100%" contentBackgroundColor="#F7F0F0"
                     initialize="gc.refresh();" variableRowHeight="true"  >        
    <mx:dataProvider>
        <mx:GroupingCollection2 id="gc" source="{sales}">
            <mx:grouping>
            <mx:Grouping label="Sno">
                <mx:GroupingField name="categoryName"/>
            </mx:Grouping>
            </mx:grouping>
        </mx:GroupingCollection2>
    </mx:dataProvider>        

    <mx:columns>
        <mx:AdvancedDataGridColumn width="125" dataField="Sno" headerText="Sno"/>
        <mx:AdvancedDataGridColumn width="175" dataField="categoryName" headerText="CategoryName"/>
        <mx:AdvancedDataGridColumn width="150" dataField="description" headerText="categoryDescription"/>

    </mx:columns>
</mx:AdvancedDataGrid>


销售是我的数据提供者。上面的代码没有删除选定的行。有人能帮我吗?提前谢谢。

由于您使用的是分组集合,您必须从网格中获取
selectedItem
,并在原始
ArrayCollection
中查找其索引:

private function deleteRows():void {
    var index:int = sales.getItemIndex(myADG1.selectedItem);
    if (index != -1) {
        sales.removeItemAt(index);
    }
}

即使我不使用MYADG1.invalidateList();行正在删除,但它不是在删除所选行,而是在删除其他行。感谢您的回复。你能给我建议一些其他的方法吗?你是在使用应用于数据提供者的过滤器还是排序?检查
getItemAt(myADG1.selectedIndex)
在调试器中或通过使用跟踪语句返回的对象,这是您所期望的吗?显示更多代码和您为解决此问题所做的任何事情的结果。Hai sunil感谢您的回复。我已经添加了我的网格和数据提供者,你能检查我哪里出了问题吗。我的老板在对网格和数据提供者的索引值进行分组时说的话将不相等,因此只有选中的行不会被删除。你能查一下吗it@user2083041
GroupingCollection2
解释了差异。我正在编辑我的答案…你好,苏尼尔。重置datagrid时,dp=new ArrayCollection()可以正常工作,但它不适用于高级datagrid,因为dp是我的数据提供程序。提前谢谢