Hi Greg,

thanks for the detailed response. I think you're right, When I started
working on Jewel DG I was wondering about columns designed as Array instead
of ArrayList, since the latter provides better manipulation of items. But I
think is ok to handle that way and take into account that it requires a
full change of all columns.

Thanks


El mar., 21 jul. 2020 a las 8:54, Greg Dove (<[email protected]>)
escribió:

> As discussed with you directly Carlos, I personally don't think it needs to
> be ArrayList.
> Usually changing things at this level (swapping 'columns') is rare, but it
> should be supported. Flex uses Array here too, and I am guessing similar
> considerations were used in the api design for the Flex DataGrids. Unless
> we think that those original assumptions have changed or were wrong, then
> probably it should be ok to keep it the same (as Array).
>
> I did some work on the emulation component support in recent months and
> iirc this wasn't working, so I made it work similar to Flex, and added a
> demo/test app for DataGrids in the mxroyale examples for that.
> One thing that is important is that the columns array be copied in setter
> and getter.  Flex does this also. This means that if you assign the same
> array twice it will potentially empty and recreate the content. It might be
> possible to inspect and check the contents of the old array for the same
> 'DataGridColumn' instances that are included in the new one when the setter
> is run to optimize some things, but I think it might be something to do as
> a subsequent optimization if it is 'needed', because the general case of
> swapping the full set of columns, I think is rare.
>
> So i think it is important to use the array.slice() copy in the getter and
> setter for internal storage of the columns array, otherwise external
> manipulation of the original array instance can mess things up a lot. I saw
> this happening in some legacy Flex code until I fixed it in the emulation
> components.
>
> One other thing that was quite common I think is the use of the 'visible'
> property in DataGridColumn which I don't think we have in Basic or Jewel
> (but we do in Flex/emulation).
> This is used more often in Flex for hiding columns, and does not require
> full refresh of the columns array.
>
>
>
>
>
> On Tue, Jul 21, 2020 at 3:22 AM Carlos Rovira <[email protected]>
> wrote:
>
> > Hi Piotr,
> >
> > the main point in Datagrid for columns in "columns", but is an Array
> (maybe
> > we could consider to change it to ArrayList?)
> >
> > In the current implementation, you need to change all the array, and
> should
> > throw away what you have and create a fresh instances of all new columns
> > and add dataproviders with data to create rows.
> >
> > If we had an ArrayList, maybe making an "addItem()" or "addItemAt()" to
> the
> > columns collection could handle just the addition of that column
> > without the need to be so aggressive with the rest of data.
> >
> >
> >
> > El lun., 20 jul. 2020 a las 12:53, Piotr Zarzycki (<
> > [email protected]>) escribió:
> >
> > > Hi Guys,
> > >
> > > I have requirements to have DataGrid where I'm adding/removing columns
> > > dynamically. I'm basically going trough the code and trying to figure
> out
> > > how everything works and how to approach that problem.
> > >
> > > I see that Jewel DataGrid is using class called DataGridButtonBar - It
> > > seems to me that I should just manipulate that one - basically adding:
> > >
> > > header.dataProvider = myNewColumns.
> > >
> > > However it does not gives me required result, even more my existing
> > columns
> > > are displaying "undefined" in header text.
> > >
> > > My general question how would you approach this ?
> > >
> > > Thanks,
> > > --
> > >
> > > Piotr Zarzycki
> > >
> > > Patreon: *https://www.patreon.com/piotrzarzycki
> > > <https://www.patreon.com/piotrzarzycki>*
> > >
> >
> >
> > --
> > Carlos Rovira
> > http://about.me/carlosrovira
> >
>


-- 
Carlos Rovira
http://about.me/carlosrovira

Reply via email to