在 FLEX 中添加新的 datagridRow,对 datagrid 进行排序并给出序列号

发布于 2024-07-26 10:28:32 字数 967 浏览 8 评论 0原文

我有一个数据网格。 我使用“添加”按钮向数据网格添加一行。 添加后,我会根据列对数据网格进行排序。 我还提供序列号,即行号作为数据网格的第一列。 但排序后,序列号功能不适用。 因此,为例如第 5 行添加的新行,根据排序应该是第 1 行,显示的序列号仍然是第 5 行。由于数字顺序不正确,UI 看起来很糟糕。 代码是:

// Sorting Function :

  private function sortGrid():void 
  {
        sortGridColl = new ArrayCollection(sortGridArray);
            sortA = new Sort();
            sortByLevel = new SortField("Type", true, false);
            sortA.fields=[sortByLevel];
         sortGridColl.sort=sortA;
         sortGridColl.refresh();
         sortGrid.dataProvider=sortGridColl;
    sortGrid.rowCount=myDPColl.length +1; 
  }        

// Serial Number function :

private function sortGridSerialNumbers(oItem:Object,iCol:int):String
{
         myDPColl = new ArrayCollection(sortGridArray);
        var iIndex:int = myDPColl.getItemIndex(oItem) + 1;
        return String(iIndex);
}

// Adding new row to datagrid :

sortGrid.dataProvider.addItem
(
{
    Type : typeName.text
}
);

I have a datagrid. I add a row to the datagrid using an ADD button. Once I add, I sort the datagrid based on a column. I also provide the serial numbers i.e. row numbers as first column to the datagrid. But, the serial number function does not apply after sorting. Hence, a new row added for e.g. row 5, based on sorting should be row 1, the serial number displayed is still row 5. The UI looks bad as numbers are not in correct order. the code is :

// Sorting Function :

  private function sortGrid():void 
  {
        sortGridColl = new ArrayCollection(sortGridArray);
            sortA = new Sort();
            sortByLevel = new SortField("Type", true, false);
            sortA.fields=[sortByLevel];
         sortGridColl.sort=sortA;
         sortGridColl.refresh();
         sortGrid.dataProvider=sortGridColl;
    sortGrid.rowCount=myDPColl.length +1; 
  }        

// Serial Number function :

private function sortGridSerialNumbers(oItem:Object,iCol:int):String
{
         myDPColl = new ArrayCollection(sortGridArray);
        var iIndex:int = myDPColl.getItemIndex(oItem) + 1;
        return String(iIndex);
}

// Adding new row to datagrid :

sortGrid.dataProvider.addItem
(
{
    Type : typeName.text
}
);

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

峩卟喜欢 2024-08-02 10:28:32

sortGridSerialNumbers 是否应该在排序后返回当前的序列号? 因为它似乎只显示您原始状态的序列号。 它不会为添加的任何项目提供正确的值,因为您将项目添加到 dataProvider,而不是原始数组。

Is sortGridSerialNumbers supposed to return the current serial numbers after sorting? Because it seems to only display the serial numbers for your original state. It won't give the correct value for any item that was added since you added the item to the dataProvider, not the original array.

苍景流年 2024-08-02 10:28:32

与数组集合相比,我更喜欢数组,因此我的选择是将列表维护为原始数组。 然后,在每次添加时,推送新元素,执行 sortOn (myArray.sortOn("Type")),然后迭代所有项目以调整序列号。 然后将数组作为新的数据提供者应用到数据网格。

I like arrays better than array collections, so my choice would be to maintain the list as a raw array. Then on each add, push the new element, do a sortOn (myArray.sortOn("Type")), then iterate over all items to adjust the serial number. Then apply the array to the datagrid as a new dataprovider.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文