I didn't have the refresh as its own method I had it in inside my result
event because I only wanted it to happen if the data saved correctly. But my
stuff looks pretty close. I'll go back and reorganize and see what happens.
And, I am actually saving the ID of the record, and then going back through
the array after the refresh to find that ID and then returning that index
record. I did think about the array changing.

I'll have to ask about server part. We have a Virtual Windows Server, but
it's really his, and since he's a .NET developer with a PC he set up all the
stuff for me - the SQL server and the services. The preliminary site we have
up where the people can just log in, is actually a lot faster than when I'm
running the stuff I'm building. SO maybe that isn't that big a deal?

Thank you :)

On Fri, Oct 30, 2009 at 2:33 PM, Charlie Hubbard
<[email protected]>wrote:

> So are you doing something like the following?
>
> function refreshDataGrid() : void {
>    myService.loadPeople();
> }
>
> function peopleLoaded( event : DynamicEvent ) : void {
>    // save off the index
>    var selectedIndex : int = dataGrid.selectedIndex;
>
>    // now swap out the model
>    dataGrid.model.source = event.people;
>    dataGrid.refresh();
>
>    // now that your model is reloaded restore the selection
>    dataGrid.selectedIndex = selectedIndex;
>    dataGrid.scrollToIndex( dataGrid.selectedIndex );
> }
>
> Or are you getting the selectedIndex before you make the call to the
> server?  If it's the later then change it to the former because once you're
> inside the peopleLoaded method.  The user can't mess with the UI while that
> method is being run so you're not going to get into a situation where it
> loses the selection, or restores the old selection if the user messes with
> the selection after making the call to the server.
>
> Things  to keep in mind about this.  Saving indexes is not a good practice,
> and in fact if you're loading completely new objects it only works provided
> the order and size are the same as prior to loading the objects.  You can't
> use selectedItem call either because you're dumping all of your objects you
> had prior to loading them from the server (might explain why your restore
> isn't working).  While they might be the same in terms of database identity,
> they are not the same instances.  It's better to save off the database ID of
> the object then search for that object in your array and restore that index.
>
> Either way, you have a serious performance problem on your client or the
> server.  Loading 321 objects is child's play for most systems so the fact
> that is taking a long time makes me think either you're loading too much
> information at once, or something else is slowing it down.  Have you tried
> hard coding the list returned on the server instead of hitting the database?
>  If that was fast then you know it's something in how you're retrieving the
> data.  Maybe save off the XML, JSON, responses from the server to a text
> file and try returning that to the client.  See how long it takes.  If it's
> fast then you know it's the database.  If it's slow then it must be on the
> client or in the transferring of the objects.
>
> Charlie
>
> On Fri, Oct 30, 2009 at 2:13 PM, Sarah Davidson <[email protected]>wrote:
>
>> Since you were so nice last time, I thought I might take another chance
>> with another question.
>>
>> I have an Accordion. In index 0 there is a datagrid that shows the records
>> of the members and index 1 is a form. When you click on an item in the
>> datagrid it throws you to the form with all the fields populated for the
>> person you want to edit. Upon clicking save it saves all the information to
>> the database correctly. Here comes my problem...
>>
>> I want it to refresh the data in the data grid and still be highlighted on
>> the person you were editing (there are 321 members, I don't want the users
>> to have to scroll through the list everytime to get to the last place they
>> were). One tutorial said I could just recall the service and I then I made a
>> function that looks up the last selected user and finds their index and
>> tells the datagrid to scroll to that index. The problem with this method, is
>> that the datagrid takes so long to refresh that the selected user has been
>> selected again, and then when it finally finishes the refresh it overwrites
>> the selected and starts back at the top of the grid with noone selected. I
>> did check to make sure that the correct index is being found and that the
>> scroll to and select work. It just isn't timing correctly. Instead of call
>> refresh, refresh finish, then call select method and select, it's happening
>> like call refresh, call select method and select, the it actually refreshes.
>>
>> Then I tried another method. I was thinking maybe it just takes to long to
>> refresh data from a server and you are supposed to update both the server
>> and the array collection at the same time, that this was would just be
>> faster and maybe better all around. With the examples of this, I also don't
>> have to worry about reselecting the last person I was on, because it just
>> worked that way. Problem with this method is that the fields that are null
>> are being fill in as blank in the array (database is still fine). I know
>> this because I have a field in the table set up to show LastName
>> (MaidenName) where the (MaidenName) only shows up if the field is not null
>> but after update the field is showing up like LastName (). I have it set up
>> so that I'm submitting the data to the array the same way as the database. I
>> thought this would be find since the nulls are handled correctly in the
>> database, but not so.
>>
>> Am I just trying to do this all the wrong way?
>>
>> Thank you,
>>
>> Sarah
>>
>>
>>
>

Reply via email to