[ 
https://issues.apache.org/jira/browse/FLEX-35197?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Santanu Karar updated FLEX-35197:
---------------------------------
    Description: 
(I've took the _DataGrid_ example that supplied within the nightly build of 
0.8.0 FlexJS SDK bundle, and I tried all my tests in that project only)

h3.Requirement

Binding is a strong feature in Flex technology. As an user I also do expect 
that FlexJS will also empowers us with the same strength developing projects. 
While testing _DataGrid_ example that supplies within SDK bundle, I noticed 
that pay-as-you-go view only available but no actual run-time data binding (as 
far I tested); which is the strength that I was talking about. Is run-time 
data-binding (by any _beads_ or any other way) to DataGrid component is at all 
available yet? 

In the following tests I tried to update one row object's (_Product_) one 
particular field (_image_) value, to see it's change in row renderer, at 
run-time. 
I also tried to add or delete an item to it's _dataProvider_ collection to see 
their changes in DataGrid UI.

h3.Actual Result

Run-time data update to collection list not affecting DataGrid UI.

h3.How I Tested

I've attached the source ZIP that supplied within SDK bundle and I modified few 
codes to test my requirement. The places which I've changed as follows. 

*Product.as*
{code}
// since I was trying to update one field at least to DataGrid UI, I added 
get/set methods to the _image_ field
private var _image:String;

[Bindable(event="imageChanged")]
public function get image():String
{
        return _image;
}
                
public function set image(value:String):void
{
        if (value != _image)
        {
                _image = value;
                dispatchEvent(new Event("imageChanged"));
        }
}
{code}

*MyInitialView.mxml*
{code}
// Upon a button click I tried to change collection data at run-time to make 
effect in DataGrid UI
private function onButtonClicked():void
{
        // 1. This part not working or updating to DataGrid UI
        /*var tmp:Product = 
ProductsModel(applicationModel).productList.getItemAt(1) as Product;
        tmp.image = "Modified Text";*/
                        
        // 2. This part not working or updating to DataGrid UI either
        /*ProductsModel(applicationModel).productList.source[1] = tmp;
        ProductsModel(applicationModel).dispatchEvent(new 
Event("propertyChange"));*/
                        
        // 3. Only this part worked when *SimpleBinding used instead of 
ConstantBinding*
        ProductsModel(applicationModel).productList = new ArrayList([new 
Product("ps220","Weejets",35,190,"assets/smallorangerect.jpg")]);
}

...

// DataGrid ConstantBinding bead replaced with SimpleBinding
<js:DataGrid id="dataGrid" x="20" y="30" width="400" height="300" 
change="dataGridChange()" rowHeight="30">
                <js:beads>
                        <js:SimpleBinding sourceID="applicationModel"
                                                          
sourcePropertyName="productList" destinationPropertyName="dataProvider" 
eventName="propertyChange"/>
...
{code}

I also created a new MXML based _DataItemRenderer_ component to see if binding 
is working anyway: *ProductItemRendererMXML.mxml*; But it didn't worked either. 

I discussed this at dev mailing-list 
(http://apache-flex-development.2333347.n4.nabble.com/Why-same-files-exists-in-multiple-places-td56983.html)
 where Alex suggested that a chain of specific beads usage may help this 
feature, but he wasn't sure if such beads already developed or not. 

Is there any such beads or procedure already available, or, in-development? 

  was:
(I've took the _DataGrid_ example that supplied within the nightly build of 
0.8.0 FlexJS SDK bundle, and I tried all my tests in that project only)

h3.Requirement

Binding is a strong feature in Flex technology. As an user I also do expect 
that FlexJS will also empowers us with the same strength developing projects. 
While testing _DataGrid_ example that supplies within SDK bundle, I noticed 
that pay-as-you-go view only available but no actual run-time data binding (as 
far I tested); which is the strength that I was talking about. Is run-time 
data-binding (by any _beads_ or any other way) to DataGrid component is at all 
available yet? 

h3.Actual Result

Run-time data update to DataGrid UI is not working.

h3.How I Tested

I've attached the source ZIP that supplied within SDK bundle and I modified few 
codes to test my requirement. The places which I've changed as follows. 

*Product.as*
{code}
// since I was trying to update one field at least to DataGrid UI, I added 
get/set methods to the _image_ field
private var _image:String;

[Bindable(event="imageChanged")]
public function get image():String
{
        return _image;
}
                
public function set image(value:String):void
{
        if (value != _image)
        {
                _image = value;
                dispatchEvent(new Event("imageChanged"));
        }
}
{code}

*MyInitialView.mxml*
{code}
// Upon a button click I tried to change collection data at run-time to make 
effect in DataGrid UI
private function onButtonClicked():void
{
        // 1. This part not working or updating to DataGrid UI
        /*var tmp:Product = 
ProductsModel(applicationModel).productList.getItemAt(1) as Product;
        tmp.image = "Modified Text";*/
                        
        // 2. This part not working or updating to DataGrid UI either
        /*ProductsModel(applicationModel).productList.source[1] = tmp;
        ProductsModel(applicationModel).dispatchEvent(new 
Event("propertyChange"));*/
                        
        // 3. Only this part worked when *SimpleBinding used instead of 
ConstantBinding*
        ProductsModel(applicationModel).productList = new ArrayList([new 
Product("ps220","Weejets",35,190,"assets/smallorangerect.jpg")]);
}

...

// DataGrid ConstantBinding bead replaced with SimpleBinding
<js:DataGrid id="dataGrid" x="20" y="30" width="400" height="300" 
change="dataGridChange()" rowHeight="30">
                <js:beads>
                        <js:SimpleBinding sourceID="applicationModel"
                                                          
sourcePropertyName="productList" destinationPropertyName="dataProvider" 
eventName="propertyChange"/>
...
{code}

I also created a new MXML based _DataItemRenderer_ component to see if binding 
is working anyway: *ProductItemRendererMXML.mxml*; But it didn't worked either. 

I discussed this at dev mailing-list 
(http://apache-flex-development.2333347.n4.nabble.com/Why-same-files-exists-in-multiple-places-td56983.html)
 where Alex suggested that a chain of specific beads usage may help this 
feature, but he wasn't sure if such beads already developed or not. 

Is there any such beads or procedure already available, or, in-development? 


> [FlexJS] Data-binding is broken or not implemented in DataGrid component
> ------------------------------------------------------------------------
>
>                 Key: FLEX-35197
>                 URL: https://issues.apache.org/jira/browse/FLEX-35197
>             Project: Apache Flex
>          Issue Type: Question
>    Affects Versions: Apache FlexJS 0.8.0
>            Reporter: Santanu Karar
>         Attachments: src.zip
>
>
> (I've took the _DataGrid_ example that supplied within the nightly build of 
> 0.8.0 FlexJS SDK bundle, and I tried all my tests in that project only)
> h3.Requirement
> Binding is a strong feature in Flex technology. As an user I also do expect 
> that FlexJS will also empowers us with the same strength developing projects. 
> While testing _DataGrid_ example that supplies within SDK bundle, I noticed 
> that pay-as-you-go view only available but no actual run-time data binding 
> (as far I tested); which is the strength that I was talking about. Is 
> run-time data-binding (by any _beads_ or any other way) to DataGrid component 
> is at all available yet? 
> In the following tests I tried to update one row object's (_Product_) one 
> particular field (_image_) value, to see it's change in row renderer, at 
> run-time. 
> I also tried to add or delete an item to it's _dataProvider_ collection to 
> see their changes in DataGrid UI.
> h3.Actual Result
> Run-time data update to collection list not affecting DataGrid UI.
> h3.How I Tested
> I've attached the source ZIP that supplied within SDK bundle and I modified 
> few codes to test my requirement. The places which I've changed as follows. 
> *Product.as*
> {code}
> // since I was trying to update one field at least to DataGrid UI, I added 
> get/set methods to the _image_ field
> private var _image:String;
> [Bindable(event="imageChanged")]
> public function get image():String
> {
>       return _image;
> }
>               
> public function set image(value:String):void
> {
>       if (value != _image)
>       {
>               _image = value;
>               dispatchEvent(new Event("imageChanged"));
>       }
> }
> {code}
> *MyInitialView.mxml*
> {code}
> // Upon a button click I tried to change collection data at run-time to make 
> effect in DataGrid UI
> private function onButtonClicked():void
> {
>       // 1. This part not working or updating to DataGrid UI
>       /*var tmp:Product = 
> ProductsModel(applicationModel).productList.getItemAt(1) as Product;
>       tmp.image = "Modified Text";*/
>                       
>       // 2. This part not working or updating to DataGrid UI either
>       /*ProductsModel(applicationModel).productList.source[1] = tmp;
>       ProductsModel(applicationModel).dispatchEvent(new 
> Event("propertyChange"));*/
>                       
>       // 3. Only this part worked when *SimpleBinding used instead of 
> ConstantBinding*
>       ProductsModel(applicationModel).productList = new ArrayList([new 
> Product("ps220","Weejets",35,190,"assets/smallorangerect.jpg")]);
> }
> ...
> // DataGrid ConstantBinding bead replaced with SimpleBinding
> <js:DataGrid id="dataGrid" x="20" y="30" width="400" height="300" 
> change="dataGridChange()" rowHeight="30">
>               <js:beads>
>                       <js:SimpleBinding sourceID="applicationModel"
>                                                         
> sourcePropertyName="productList" destinationPropertyName="dataProvider" 
> eventName="propertyChange"/>
> ...
> {code}
> I also created a new MXML based _DataItemRenderer_ component to see if 
> binding is working anyway: *ProductItemRendererMXML.mxml*; But it didn't 
> worked either. 
> I discussed this at dev mailing-list 
> (http://apache-flex-development.2333347.n4.nabble.com/Why-same-files-exists-in-multiple-places-td56983.html)
>  where Alex suggested that a chain of specific beads usage may help this 
> feature, but he wasn't sure if such beads already developed or not. 
> Is there any such beads or procedure already available, or, in-development? 



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to