Hank is correct, but if you are working on a prototype or something and are
editing data in place
you might want to try a call to currentUsersList.refresh() and see if your
changes show up.
I have the following:
private function sampleMessageHandler( e : MessageEvent) : void
{
conversation += e.message.headers.sender + " / " +
e.message.headers.type + " / " +
e.message.headers.oper +
": " + e.message.body + "\n";
if (e.message.headers.type == "data") {
if (e.message.headers.oper == "add") {
var obj : Object = new Object();
obj.col1 = e.message.body;
myData.addItem(obj);
} else if (e.message.headers.oper == "lock") {
var myCursor : IViewCursor = myData.createCursor();
while (!myCursor.afterLast) {
if (myCursor.current.col1 == e.message.body) {
myCursor.current.col2 =
e.message.headers.sender;
myData.refresh();
break;
}
myCursor.moveNext();
}
}
}
}
The changes don't show up in the grid until the myData.refresh();
--Sean
----- Original Message ----
From: hank williams <[EMAIL PROTECTED]>
To: [email protected]
Sent: Monday, March 12, 2007 6:16:37 PM
Subject: Re: [flexcoders] Data Binding to Item in ArrayCollection
Kevin,
In a cairngorm app, you want to detect the change to the row and then send it
to the server. If the server accepts the change then in the response to the
command object you change the item in the arrayCollection which is then
reflected in your data grid, which is bound to the arrayCollection. If you dont
do it this way then your data model is not in sync with the server, which you
want to avoid. By the way you want to use the functions of the arrayCollection
to change the data because otherwise events that cause the datagrid to update
will not be triggered.
Hank
On 3/12/07, Kevin <[EMAIL PROTECTED] com> wrote:
I am working on a Cairngorm app. I have a simple User Admin Interface. The
ModelLocator stores a list of all the Users as
currentUsersList: ArrayCollection
I populate a small DataGrid with this list and everything is working fine. To
edit the list, the user can click on a row in the DataGrid and then edit the
information. The problem is that for some reason the changed information isn't
getting changed in the DataGrid like it should. What is the proper way to bind
a control to an individual item in an ArrayCollection?
I first tried to create a variable in the ML to hold the UserDataVO that had
been selected:
selectedUser: UserDataVO = currentUsersList[ some selected index];
However, this seems to 'copy' (rather than reference) the VO from the Array
collection and thus changes to this VO do not get reflected in the original
ArrayCollection
I then tried to bind directly to the ArrayCollection items using getItemAt
text = {model.currentUsers List.getItemAt(selectedIndex) .username}
However, this doesn't seem to work to modify the original values in the
ArrayCollection. What am I doing wrong. I don't think it should be this hard.
Thanks, Kevin
<!--
#ygrp-mlmsg {font-size:13px;font-family:arial,helvetica,clean,sans-serif;}
#ygrp-mlmsg table {font-size:inherit;font:100%;}
#ygrp-mlmsg select, input, textarea {font:99% arial,helvetica,clean,sans-serif;}
#ygrp-mlmsg pre, code {font:115% monospace;}
#ygrp-mlmsg * {line-height:1.22em;}
#ygrp-text{
font-family:Georgia;
}
#ygrp-text p{
margin:0 0 1em 0;
}
#ygrp-tpmsgs{
font-family:Arial;
clear:both;
}
#ygrp-vitnav{
padding-top:10px;
font-family:Verdana;
font-size:77%;
margin:0;
}
#ygrp-vitnav a{
padding:0 1px;
}
#ygrp-actbar{
clear:both;
margin:25px 0;
white-space:nowrap;
color:#666;
text-align:right;
}
#ygrp-actbar .left{
float:left;
white-space:nowrap;
}
.bld{font-weight:bold;}
#ygrp-grft{
font-family:Verdana;
font-size:77%;
padding:15px 0;
}
#ygrp-ft{
font-family:verdana;
font-size:77%;
border-top:1px solid #666;
padding:5px 0;
}
#ygrp-mlmsg #logo{
padding-bottom:10px;
}
#ygrp-vital{
background-color:#e0ecee;
margin-bottom:20px;
padding:2px 0 8px 8px;
}
#ygrp-vital #vithd{
font-size:77%;
font-family:Verdana;
font-weight:bold;
color:#333;
text-transform:uppercase;
}
#ygrp-vital ul{
padding:0;
margin:2px 0;
}
#ygrp-vital ul li{
list-style-type:none;
clear:both;
border:1px solid #e0ecee;
}
#ygrp-vital ul li .ct{
font-weight:bold;
color:#ff7900;
float:right;
width:2em;
text-align:right;
padding-right:.5em;
}
#ygrp-vital ul li .cat{
font-weight:bold;
}
#ygrp-vital a {
text-decoration:none;
}
#ygrp-vital a:hover{
text-decoration:underline;
}
#ygrp-sponsor #hd{
color:#999;
font-size:77%;
}
#ygrp-sponsor #ov{
padding:6px 13px;
background-color:#e0ecee;
margin-bottom:20px;
}
#ygrp-sponsor #ov ul{
padding:0 0 0 8px;
margin:0;
}
#ygrp-sponsor #ov li{
list-style-type:square;
padding:6px 0;
font-size:77%;
}
#ygrp-sponsor #ov li a{
text-decoration:none;
font-size:130%;
}
#ygrp-sponsor #nc {
background-color:#eee;
margin-bottom:20px;
padding:0 8px;
}
#ygrp-sponsor .ad{
padding:8px 0;
}
#ygrp-sponsor .ad #hd1{
font-family:Arial;
font-weight:bold;
color:#628c2a;
font-size:100%;
line-height:122%;
}
#ygrp-sponsor .ad a{
text-decoration:none;
}
#ygrp-sponsor .ad a:hover{
text-decoration:underline;
}
#ygrp-sponsor .ad p{
margin:0;
}
o {font-size:0;}
.MsoNormal {
margin:0 0 0 0;
}
#ygrp-text tt{
font-size:120%;
}
blockquote{margin:0 0 0 4px;}
.replbq {margin:4;}
-->
____________________________________________________________________________________
Finding fabulous fares is fun.
Let Yahoo! FareChase search your favorite travel sites to find flight and hotel
bargains.
http://farechase.yahoo.com/promo-generic-14795097