【问题标题】:How to change itemrender Button Using DataField values?如何使用 DataField 值更改 itemrender 按钮?
【发布时间】:2013-01-01 06:06:38
【问题描述】:

在我的 Flex 应用程序 DataGrid 中...

<mx:DataGrid id="userListDataGrid" x="60" y="40" width="520" height="148" dataProvider="{schedule}" creationComplete="userListDataGrid_creationCompleteHandler(event)">
    <mx:columns>
        <mx:DataGridColumn dataField="courseDate" headerText="Date"/>               
        <mx:DataGridColumn dataField="courseName" headerText="Course Name"/>
        <mx:DataGridColumn id="usertype" dataField="userType" headerText="User Type"/>

        <mx:DataGridColumn headerText="Reminder">
            <mx:itemRenderer>
                <mx:Component>
                    <mx:HBox>
                      <mx:Button id="join" label="Join" borderColor="#5d93b9"
                               color="#04becf">
                      </mx:Button>  
                      <mx:Button id="start" label="Start" borderColor="#5d93b9"
                               color="#04becf">
                      </mx:Button>
                    </mx:HBox>
                </mx:Component>
            </mx:itemRenderer>
        </mx:DataGridColumn>

    </mx:columns>
</mx:DataGrid>

但是如何根据 DataField 值更改 Button,即。

Host----Start Button
Attendee----JOin Button

【问题讨论】:

    标签: actionscript-3 apache-flex flex3 mxml


    【解决方案1】:

    监听 itemRenderer 的 dataChange 事件并根据 usertype 值切换按钮的可见性。由于您没有提供示例元素,因此我在这里对您的数据类型进行了一些“猜测”。但是,大致是这样的:

        <mx:DataGridColumn headerText="Reminder">
            <mx:itemRenderer>
                <mx:Component>
                    <mx:HBox dataChange="onDataChange()">
                      <mx:Script>
                          protected function onDataChange():void{
                             if(data.usertype == 'Host'){
                                join.visible = true;
                                start.visible = false;
                             } else {
                                join.visible = false;
                                start.visible = true;
                             }
                          }
                      </mx:Script>
                      <mx:Button id="join" label="Join" borderColor="#5d93b9"
                               color="#04becf">
                      </mx:Button>  
                      <mx:Button id="start" label="Start" borderColor="#5d93b9"
                               color="#04becf">
                      </mx:Button>
                    </mx:HBox>
                </mx:Component>
            </mx:itemRenderer>
        </mx:DataGridColumn>
    

    代码是在浏览器中写的,可能语法不正确。

    【讨论】:

    • 感谢您重播...但是如果我们在 onDataChange() 中写入警报框也不打印,则此代码不起作用...这就是我使用 outerDocument.onDataChange()... 但在那个时候加入和开始ID是不可见的......
    • 我不明白你说你正在使用“outerDocument.onDataChange()”是什么意思。 dataChange 方法需要在渲染器内部;不在它之外;否则它将无法访问任何渲染器的孩子。有时单个渲染器会在设置数据之前初始化;因此您可能需要检查数据是否为非空。在设置可见性之前,还要检查 join 和 start 是否为非空。
    • 如果你需要更多,我将不得不要求一个可运行的样本。我知道我的方法是正确的,因为我已经做了很多次了;但我的确切代码可能有问题。
    猜你喜欢
    • 2011-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-23
    • 2011-05-30
    • 1970-01-01
    • 2021-02-11
    • 2016-01-01
    相关资源
    最近更新 更多