I've tried setting just selectedIndices - same result In my CheckBoxDataGrid.selectAll() method, I tried calling invalidateProperties/invalidateList/validateNow - same result.
In my CheckBoxHeaderRenderer.clickHandler, I tried using callLater to execute CheckBoxDataGrid.selectAll() - same result. I repeated the callLater test after removing invalidateProperties/invalidateList/validateNow - same result. Any suggestions on which operations I should use for callLater()? As a workaround, I added an event listener for itemEditBeginning on the checkboxdatagrid. If the selected item count was > 1, then I called event.preventDefault(). This actually triggers a crash sometime later in mx:DataGrid (line 3889 - itemEditorInstance is null). On Mon, Jan 12, 2009 at 10:07 AM, Alex Harui <[email protected]> wrote: > I would not set both selectedItems and selectedIndices. Probably just > selectedIndices because it should be faster. > > > > I don't think selectItem will be called if the item is already selected. > Due to the way invalidation works, maybe it hasn't been de-selected yet. > Sometimes, callLater can help in these situations. > > > > *From:* [email protected] [mailto:[email protected]] *On > Behalf Of *Glenn Jones > *Sent:* Saturday, January 10, 2009 4:52 PM > *To:* [email protected] > *Subject:* Re: [flexcoders] DataGrid selectAll problem > > > > I started with the example from your blog dated Feb 2008 > (CheckBoxListAndDataGrid). > > To deselect the other rows, the checkbox column header renderer calls a > 'selectAll()' method on the CheckBoxDataGrid > with a flag of false. That method builds two arrays - one for all items > in the collection and one for all indices in the collection. > It then replaces mx:DataGrid.selectedItems and selectedIndices with new > arrays. In the deselect case, the new arrays are empty. > In the select all case then have all items/indices. > > Visually, selectAll true/false seems to work when it's called. But in the > use-case I describe below I'm counting on the > mx:DataGrid.selectItem() to be called in order to deselect rows in the case > that a single row is selected. > Based on trace statements, I know that mx:DataGrid.selectItem() is never > called when the problem occurs > > Is there something about the way I'm selecting things which causes the > selectItem() to not be called? > > I tried replacing just selectedItemds or just selectedIndicies or both. it > doesn't seem. > > Thanks, > Glenn > > On Fri, Jan 9, 2009 at 1:11 AM, Alex Harui <[email protected]> wrote: > > Which example did you start with? Which event do you use to deselect the > other rows, and what does that code look like? > > > > *From:* [email protected] [mailto:[email protected]] *On > Behalf Of *Glenn Jones > *Sent:* Thursday, January 08, 2009 9:49 PM > *To:* [email protected] > *Subject:* [flexcoders] DataGrid selectAll problem > > > > Hi, > > I'm using Flex 3.2 and I have a DataGrid which implements a column of > checkboxes to select rows. I started with Alex' example. > Then I added a header renderer on the checkbox column such that if check > the header, then all rows are selected. > To implement the select all behavior, I'm creating an array of indices for > [0..n] and assigning that array to mx:DataGrid.selectedIndices. > > For the most part this works fine. > > But if the DataGrid is editable, then I sometimes have a problem. The > problem is that if all rows are selected, and you click on > an editable cell, sometimes the cell becomes editable without deselecting > all of the other rows. The behavior I want is that > if you start editing a cell, then just that row becomes selected. This > happens some of time, but not all of the time. > > If the grid is non-editable, then I can't reproduce the problem. > > I overrode mx:DataGrid.selectItem() in order to clear the checkbox in the > header renderer any time a single item is selected. I've > noticed that when the problem behavior occurs, the mx:DataGrid.selectItem() > method is never called. > > It's almost like there's some race condition between selecting an item and > starting a cell edit. > > Any ideas on how I could work around this? > > Thanks, > Glenn > > > > >

