Flex DataGrid:根据另一个值更改值?

2024-05-01

我在 Flex 中有一个 DataGrid,其中一列是复选框,另一列是数值。单击该复选框时,数值应更改,如果未选中该复选框,则数值应更改为 0;如果选中该复选框,则应更改为预定义的最小值。这是我的代码:

<mx:DataGrid x="0" y="45" width="272" height="525" dataProvider="{dp}" variableRowHeight="true" editable="true" id="equipmentDG" verticalAlign="middle">                
    <mx:columns>                    

        <mx:DataGridColumn headerText="" headerStyleName="gridheader" width="20" dataField="included" editorDataField="selected" rendererIsEditor="true">
            <mx:itemRenderer>
                <fx:Component>
                    <mx:CheckBox click="handleClicks(event)">
                        <fx:Script>
                            <![CDATA[
                            public function handleClicks(event:MouseEvent):void
                            {
                                data.included = !data.included;

                                if(data.included && data.antal == 0)     
                                    data.antal = data.minNo; 
                                else if(!data.included) 
                                    data.antal = 0;
                            }
                            ]]>
                        </fx:Script>
                    </mx:CheckBox>
                </fx:Component>
            </mx:itemRenderer>
        </mx:DataGridColumn>
        <mx:DataGridColumn headerText="Antal" headerStyleName="gridheader" width="40" dataField="antal" editorDataField="value" editable="true">
            <mx:itemEditor>
                <fx:Component>

                    <mx:NumericStepper stepSize="1" width="35" height="20"  focusOut="numericstepper1_changeHandler(event)">
                        <fx:Script>
                            <![CDATA[
                            import mx.events.NumericStepperEvent;
                            override public function set data(value:Object):void
                            {
                                super.data = value;

                                if (value && value.hasOwnProperty("minNo"))
                                    minimum = value.minNo;

                                if (value && value.hasOwnProperty("maxNo"))
                                    maximum = value.maxNo;                                              
                            }

                            protected function numericstepper1_changeHandler(event:Event):void
                            {
                                if(data.antal > 0)
                                    data.included = true;
                                else
                                    data.included = false;
                            }

                            ]]>
                        </fx:Script>

                    </mx:NumericStepper>                                        

                </fx:Component>
            </mx:itemEditor>
        </mx:DataGridColumn>


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

数据中的值会更新(当我关闭并打开该对话框时可以看到它),但它不会在数据网格中立即更新。如何在单击复选框后立即使值发生明显变化?


在数据对象中,确保每次包含的属性发生更改时都会触发一个事件。在第二个 itemRenderer 中,监听事件并在属性更改时更新值。

从概念上讲是这样的:

在数据对象中:

private var _included : Boolean;
public function get included():Boolean{
 return this._included;
}

public function set included(value:Boolean):void
 this._included = value;
 this.dispatchEvent(new Event('includedChanged');
}

将渲染器添加到第二列,如下所示:

 <mx:DataGridColumn headerText="Antal" headerStyleName="gridheader" width="40" dataField="antal" editorDataField="value" editable="true">
  <mx:itemRenderer>
   <fx:Component>
   <mx:Label dataChange="onDataChange()" >
    <fx:Script>
     <![CDATA[
      public function onDataChange():void{
       thistext = data['Antal'];
       this.data.addEventListener('includedChanged',onIncludedChange);
      }
      public function onIncludedChange(e:Event):void{
       this.text = data['Antal'];
      }
     ]]>
    </fx:Script>
   </mx:Label>
  </fx:Component>
  </mx:itemRenderer>
  <mx:itemEditor>
   <fx:Component>

    <mx:NumericStepper stepSize="1" width="35" height="20"  focusOut="numericstepper1_changeHandler(event)">
     <fx:Script>
      <![CDATA[
       import mx.events.NumericStepperEvent;
       override public function set data(value:Object):void{
        super.data = value;

        if (value && value.hasOwnProperty("minNo"))
         minimum = value.minNo;

        if (value && value.hasOwnProperty("maxNo"))
          maximum = value.maxNo;                                              
        }

        protected function numericstepper1_changeHandler(event:Event):void
        {
         if(data.antal > 0)
          data.included = true;
         else
          data.included = false;
         }

         ]]>
        </fx:Script>
       </mx:NumericStepper>                                        
      </fx:Component>
     </mx:itemEditor>
    </mx:DataGridColumn>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Flex DataGrid:根据另一个值更改值? 的相关文章

随机推荐

  • 将 lit / lit-html TemplateResult 渲染为字符串

    在lit lit html lit element中 标准组件是TemplateResult 通常是HTMLTemplateResult 创建如下 function renderMe msg return html div Hello ms
  • 返回在响应的特定条件下首先执行的 future

    我正在尝试使用 completablefutures 进行 3 个休息调用 并返回第一个与特定响应匹配的调用 下面是我为其编写的示例测试代码 减去其余调用 但这似乎不起作用 即使有等待时间 我总是看到 future1 被返回 这意味着 te
  • 具有类似数组性能的 Java Bitset 替代方案?

    我正在寻找 Java Bitset 实现的替代方案 我正在实现一个高性能算法 似乎使用 Bitset 对象会降低其性能 有任何想法吗 Someone here https stackoverflow com questions 605226
  • 我可以构造一个长 list 以使索引很长吗?

    目前索引aList
  • 将向量传递到 Intel SGX 中的 enclave

    我有一个vector
  • UIScrollView 在 vi​​ewwillappear 中设置 contentoffset 不起作用

    我想知道是否可以在 viewwillappear 方法中为 uiscrollview 设置 contentoffset void viewWillAppear BOOL animated self scrollView setContent
  • jQuery 性能:hide() 与 is(':visible') - 哪个更快?

    我有多个下拉框 当单击链接时它们会下降 如果同时打开 这些盒子就有可能重叠 查询元素是否可见是否更快 box is visible 然后如果该框可见则将其隐藏 box hide 或者只是告诉它无论如何都要隐藏 为了便于论证 我们假设 50
  • Swift - 从 UnsafePointer 长度转换为 String

    我考虑了很多similar问题 但仍然无法让编译器接受这一点 Socket Mobile API 在 Objective C 中 将 ISktScanDecodedData 传递到 Swift 中的委托方法中 数据可能是二进制的 我想这就是
  • Bash:在新终端中执行带有参数的命令[重复]

    这个问题在这里已经有答案了 所以我想在 bash 中打开一个新终端并执行带参数的命令 只要我只采取类似的东西ls作为命令它工作正常 但是当我采取类似的东西时route n 所以带参数的命令不起作用 代码 gnome terminal win
  • 如何在 Ubuntu 9.10 上安装 R 软件包 rgl? [复制]

    这个问题在这里已经有答案了 可能的重复 安装 rgl 时出现问题 https stackoverflow com questions 7473067 problem installing rgl 我正在尝试在 Ubuntu 9 10 上安装
  • 可以在 Vue 模板中渲染 VNode 吗?

    我遇到的情况是 我有一个渲染函数将一些数据传递到作用域槽 作为此数据的一部分 我想包含一些由渲染函数构造的 VNode 这些 VNode 可以选择由作用域插槽使用 无论如何 在模板中编写作用域槽以输出收到的原始 VNode 时是否存在 Vu
  • Git checkout 分支从其他分支留下目录树

    我有一个branch2 其源是branch1 并重命名了源自branch1 的目录 当签出branch1时 重命名的目录仍然存在 但没有标记为未暂存的修改 重命名的目录当然不会作为branch1 上的提交出现 为什么会出现这种情况 上述目录
  • 如何在代码中设置 DataGridTextColumn 的绑定?

    我正在使用 CodePlex 的工具包 DataGrid 我正在代码中生成列 我怎样才能设置相当于 绑定名字 在代码中 或者 我怎样才能设置值 这就是我需要做的 不一定要绑定它 我只想要数据网格单元格中模型属性的值 DataGridText
  • IE9 SmartScreen 过滤器警告

    我的公司开发了一款 IT 基础设施管理软件 我们主要在乌克兰使用该软件 我们的客户端应用程序安装程序可以从我们的 FTP 服务器下载 每当有人从我们的 FTP 下载 Install msi 时 IE9 都会告诉用户该软件包不常被下载 因此可
  • 具体5-如何在php中通过ajax获取上传的文件

    我正在尝试通过ajax上传多个文件 但我不知道如何在PHP中获取上传的文件 我发送给他们 var attachments attachment file var post data new FormData if attachments l
  • .Net Framework 4.8 和 .Net 5 之间的垃圾收集行为差异

    为了在已经发生很多次的地方检测潜在的内存泄漏 我使用了如下所示构建的测试 主要思想是拥有一个实例 不再引用它并让垃圾收集器收集它 我不想关注这是否是一种好的技术 在我的具体情况下它做得非常出色 但我想关注以下问题 下面的代码在 Net Fr
  • size_t 总是无符号吗?

    如标题 size t 始终无符号 即size t x is x always gt 0 Yes It s usually定义如下 在 32 位系统上 typedef unsigned int size t 参考 C 标准第 18 1 节定义
  • Code First 从 int 迁移到 Guid 主键问题

    我正在尝试将代码第一个 ID 列从 int 更改为 Guid 当尝试运行迁移时 我收到以下消息 Identity column CustomFieldId must be of data type int bigint smallint t
  • 将 Flask_login 会话与 jinja2 模板一起使用

    我有简单的 jinja2 模板 带有注册 登录链接 我应该在用户登录时隐藏它们 我还使用flask login 模块来处理这个东西 问题是 我应该如何识别用户是否已登录 jinja2 模板 Flask Login 添加了current us
  • Flex DataGrid:根据另一个值更改值?

    我在 Flex 中有一个 DataGrid 其中一列是复选框 另一列是数值 单击该复选框时 数值应更改 如果未选中该复选框 则数值应更改为 0 如果选中该复选框 则应更改为预定义的最小值 这是我的代码