There's a CANCELLED reason for Esc.
 
I'm kinda lost right now.  What do you want to happen on
 
-tabbing to next column
-enter going to next row
-clicking on another cell in a different row
-scrolling
-clicking outside DG
-esc cancelling edit
 
Which cases aren't working?

 
________________________________

From: flexcoders@yahoogroups.com [mailto:[EMAIL PROTECTED] On
Behalf Of Richard Rodseth
Sent: Thursday, November 29, 2007 12:58 PM
To: flexcoders@yahoogroups.com
Subject: Re: [flexcoders] itemEditEnd preventDefault



The edge cases will get you. One issue (so far) with this is that if you
Tab with an invalid value (focus is lost and regained), then follow up
with an Esc, the committed value will be the invalid one. I might be
able to live with this. If I call preventDefault in the OTHER case, I
don't have that issue, but then the editor regains focus but without the
current (invalid) value. 


On Nov 29, 2007 12:38 PM, Richard Rodseth <[EMAIL PROTECTED]
<mailto:[EMAIL PROTECTED]> > wrote:


        Actually, it turns out I have to take the DataGridEventReason
into account. 


        private function handleItemEditEnd(event : DataGridEvent) : void
{

          if (event.itemRenderer.data.valid || event.reason ==
DataGridEventReason.OTHER) {

            // do some stuff;

          } else if (event.reason == DataGridEventReason.OTHER) {

            // Losing focus outside the data grid - take it back

            myGrid.editedItemPosition = {columnIndex:event.columnIndex,
rowIndex:event.rowIndex}

          } else {

            // Losing focus to another row or column - prevent it

            event.preventDefault();

          }

        }


        On Nov 29, 2007 11:58 AM, Richard Rodseth <[EMAIL PROTECTED]
<mailto:[EMAIL PROTECTED]> > wrote:
        

                Thanks, Alex. I don't know if there's a bug, per se. 

                As I mentioned in my first post, I only had an issue
when losing focus to something outside the grid. I may have a workable
solution which is hopefully not too ugly: 

                - on itemEditEnd, call preventDefault, and re-activate
the editor using editedItemPosition
                - in the editor, override setFocus and call the
validator

                I haven't tested this with scrolling.

                On Nov 29, 2007 11:15 AM, Alex Harui < [EMAIL PROTECTED]
<mailto:[EMAIL PROTECTED]> > wrote:
                

                        

                        Keep in mind that, if the user scrolls, or
clicks outside the DG, there is no way to prevent the edit session from
ending (at least not without a whole bunch of work).
                         
                        I just took a look at the code.  When tabbing
from one cell to another, preventDefault() on itemEditEnd should keep
the editor alive.  If you put  together a small test case I can try to
see why it doesn't work.

________________________________

                        
                        From: flexcoders@yahoogroups.com
<mailto:flexcoders@yahoogroups.com>  [mailto:flexcoders@yahoogroups.com
<mailto:flexcoders@yahoogroups.com> ] On Behalf Of Richard Rodseth
                        
                        Sent: Thursday, November 29, 2007 10:52 AM
                        To: flexcoders@yahoogroups.com
<mailto:flexcoders@yahoogroups.com> 
                        Subject: Re: [flexcoders] itemEditEnd
preventDefault
                        
                        

                        And if I omit preventDefault, the invalid value
remains, but the red focus ring turns blue. I've also established that
setting editedItemPosition creates a new item editor (as I would
expect), so I can't store and access a "valid" flag in the item editor
component. 


                        Is there some other way to prevent an invalid
field from losing focus? Or to restart the edit with the invalid value
and have it re-validate?
                        
                        
                        On Nov 28, 2007 1:51 PM, Richard Rodseth
<[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]> > wrote:
                        

                                That keeps(restores) the focus, but also
restores the pre-edit value. 


                                On Nov 28, 2007 1:20 PM, Alex Harui <
[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]> > wrote:
                                

                                

                                IIRC, the pattern is to call
preventDefault and then set editedItemPosition to the current position.

________________________________

                                From: flexcoders@yahoogroups.com
<mailto:flexcoders@yahoogroups.com>  [mailto:flexcoders@yahoogroups.com
<mailto:flexcoders@yahoogroups.com> ] On Behalf Of Richard Rodseth
                                Sent: Wednesday, November 28, 2007 12:20
PM
                                To: flexcoders@yahoogroups.com
<mailto:flexcoders@yahoogroups.com> 
                                Subject: [flexcoders] itemEditEnd
preventDefault
                                
                                

                                I have an item renderer/editor that does
as-you-type validation using standard Flex validators, and updates a
"valid" property in the data. I wish to prevent the edit from ending if
the data is valid. 


                                When tabbing, the following works in
column one, but not in column two (the last editable column):


                                private function handleItemEditEnd(event
: DataGridEvent) : void {

                                if (event.itemRenderer.data.valid) {

                                // do some stuff

                                } else {

                                event.preventDefault();

                                }

                                
                                

                                Any ideas? Also, does the renderer get
any access to this event? If I want to move "valid" from the data to the
renderer itself, I suppose I would have to cast event.itemRenderer above
to my renderer type, and call a method or access a property.

                                
                                

                                Thanks.

                                

                                

                                

                                



                        

                        

                        

                        




 

Reply via email to