extjs求教,使用rowEditing时combo的赋值问题

fff-cai 2015-07-21 04:22:08
首先是grid的显示

进行编辑后


这是举办方列的js代码,绑定的是一个对象

问题就是怎么对编辑时的combo进行赋值,让它能正常显示文本。还有后面的时间控件也是这个问题,时间控件绑定的值都是Date(1438272000000)这样的文本
...全文
445 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 3 楼 seed629869600 的回复:
[quote=引用 2 楼 showbo 的回复:] 你的Partner那个键值最好改为普通类型,不要为对象,要不editor是直接使用那个键的值的,不会取子键值,就是你配置的renderer。 当然你不嫌麻烦,可以配置rowEditing的相关事件来自己更新记录
    var rowEditing = Ext.create('Ext.grid.plugin.RowEditing', {
        clicksToMoveEditor: 2,
        autoCancel: false, listeners: { beforeedit: function (editor, e, eOpts) { 
            setTimeout(function () {
                var x =document.getElementById('xxxx');
                x.value = e.record.get('Partner').NAME;
            }, 100)
        }, edit: function (editor, e, eOpts) {
            var x = document.getElementById('xxxx'); 
            e.record.set('Partner', { NAME: x.value });
            e.record.commit();
        }
        }
    });
{ header: '举办方', dataIndex: 'Partner', editor: { allowBlank: false, inputId: 'xxxx' } } startdt的内容要改为时间对象,而不是字符串。如 "startdt":"Date(1438272000000)",你要改成"startdt":new Date(1438272000000),这样startdt才是时间,而不是字符串。要不直接显示你的startdt内容,因为不是时间对象,虽然你那列添加了renderer进行格式化
多谢,我之前也试过在beforeedit直接设置编辑框的值,但是无效,现在加了延时后就行了,想来是beforeedit后还有事件对编辑框进行了赋值。
var rowEditing = new Ext.grid.plugin.RowEditing({
            clicksToEdit: 2,
            saveBtnText: '保存',
            cancelBtnText: "取消",
            autoCancel: false,
            listeners: {
                beforeedit: function (editor, e, eOpts) {
                    setTimeout(function () {
                        Ext.getCmp("editPartner").setValue(e.record.get('Partner').ID);
                        Ext.getCmp("editBEGINTIME").setValue(eval('new ' + (e.record.get('BEGINTIME').replace(/\//g, ''))));
                        Ext.getCmp("editENDTIME").setValue(eval('new ' + (e.record.get('ENDTIME').replace(/\//g, ''))));
                    }, 100);
                },
                edit: function (editor, e, eOpts) {
                    var name = "";
                    for (var i = 0; i < pjson.length; i++) {
                        if (Ext.getCmp("editPartner").getValue() == pjson[i]["ID"]) {
                            name = pjson[i]["NAME"];
                            break;
                        }
                    }
                    e.record.set('Partner', { ID: Ext.getCmp("editPartner").getValue(),NAME:name });
                    e.record.commit();                    
                }
            }
        });
[/quote] ext没有输入控件生成完毕后的事件,所以需要延时执行下才能获取到到render后的输入控件
fff-cai 2015-07-22
  • 打赏
  • 举报
回复
引用 2 楼 showbo 的回复:
你的Partner那个键值最好改为普通类型,不要为对象,要不editor是直接使用那个键的值的,不会取子键值,就是你配置的renderer。 当然你不嫌麻烦,可以配置rowEditing的相关事件来自己更新记录
    var rowEditing = Ext.create('Ext.grid.plugin.RowEditing', {
        clicksToMoveEditor: 2,
        autoCancel: false, listeners: { beforeedit: function (editor, e, eOpts) { 
            setTimeout(function () {
                var x =document.getElementById('xxxx');
                x.value = e.record.get('Partner').NAME;
            }, 100)
        }, edit: function (editor, e, eOpts) {
            var x = document.getElementById('xxxx'); 
            e.record.set('Partner', { NAME: x.value });
            e.record.commit();
        }
        }
    });
{ header: '举办方', dataIndex: 'Partner', editor: { allowBlank: false, inputId: 'xxxx' } } startdt的内容要改为时间对象,而不是字符串。如 "startdt":"Date(1438272000000)",你要改成"startdt":new Date(1438272000000),这样startdt才是时间,而不是字符串。要不直接显示你的startdt内容,因为不是时间对象,虽然你那列添加了renderer进行格式化
多谢,我之前也试过在beforeedit直接设置编辑框的值,但是无效,现在加了延时后就行了,想来是beforeedit后还有事件对编辑框进行了赋值。
var rowEditing = new Ext.grid.plugin.RowEditing({
            clicksToEdit: 2,
            saveBtnText: '保存',
            cancelBtnText: "取消",
            autoCancel: false,
            listeners: {
                beforeedit: function (editor, e, eOpts) {
                    setTimeout(function () {
                        Ext.getCmp("editPartner").setValue(e.record.get('Partner').ID);
                        Ext.getCmp("editBEGINTIME").setValue(eval('new ' + (e.record.get('BEGINTIME').replace(/\//g, ''))));
                        Ext.getCmp("editENDTIME").setValue(eval('new ' + (e.record.get('ENDTIME').replace(/\//g, ''))));
                    }, 100);
                },
                edit: function (editor, e, eOpts) {
                    var name = "";
                    for (var i = 0; i < pjson.length; i++) {
                        if (Ext.getCmp("editPartner").getValue() == pjson[i]["ID"]) {
                            name = pjson[i]["NAME"];
                            break;
                        }
                    }
                    e.record.set('Partner', { ID: Ext.getCmp("editPartner").getValue(),NAME:name });
                    e.record.commit();                    
                }
            }
        });
  • 打赏
  • 举报
回复
你的Partner那个键值最好改为普通类型,不要为对象,要不editor是直接使用那个键的值的,不会取子键值,就是你配置的renderer。 当然你不嫌麻烦,可以配置rowEditing的相关事件来自己更新记录
    var rowEditing = Ext.create('Ext.grid.plugin.RowEditing', {
        clicksToMoveEditor: 2,
        autoCancel: false, listeners: { beforeedit: function (editor, e, eOpts) { 
            setTimeout(function () {
                var x =document.getElementById('xxxx');
                x.value = e.record.get('Partner').NAME;
            }, 100)
        }, edit: function (editor, e, eOpts) {
            var x = document.getElementById('xxxx'); 
            e.record.set('Partner', { NAME: x.value });
            e.record.commit();
        }
        }
    });
{ header: '举办方', dataIndex: 'Partner', editor: { allowBlank: false, inputId: 'xxxx' } } startdt的内容要改为时间对象,而不是字符串。如 "startdt":"Date(1438272000000)",你要改成"startdt":new Date(1438272000000),这样startdt才是时间,而不是字符串。要不直接显示你的startdt内容,因为不是时间对象,虽然你那列添加了renderer进行格式化
fff-cai 2015-07-21
  • 打赏
  • 举报
回复
extjs都没人用吗?高手何在
内容概要:本文详细介绍了利用二维域有限差分法(2D FDTD)对光子晶体90度弯曲波导进行数值仿真的Matlab代码实现。该仿真方法旨在精确分析光子晶体波导在弯曲结构下的光传输特性,揭示其导光机制与缺陷模式的调控原理。资源包含完整的Matlab程序代码,支持对空间网格划分、介电常数分布、边界条件(如PML吸收边界)及光源参数等关键仿真要素的灵活设置与优化,便于用户复现结果并开展深入研究。通过仿真可直观获得光场在波导中的传播动态、透射谱特性以及能量损耗情况,为高性能光子器件的设计与优化提供理论依据和技术支持。; 适合人群:具备电磁场理论、光学基础和Matlab编程能力,从事光子学、集成光学或纳米光子器件研究的研究生、科研人员及工程技术开发者。; 使用场景及目标:①学习和掌握FDTD方法在周期性介质(光子晶体)器件仿真中的具体应用流程;②研究90度弯波导的光传输性能,分析弯曲损耗来源并探索低损耗结构优化方案;③作为光子集成电路中关键无源器件的设计与教学参考案例,服务于学术研究与工程实践。; 阅读建议:建议结合光子晶体能带理论与FDTD算法基本原理进行系统学习,运行代码应逐步调整结构参数与仿真设置,观察光场演化和输出结果的变化,以深化对物理现象的理解,并可在此基础上拓展至其他复杂光子结构(如分束器、谐振腔)的仿真分析。
内容概要:本文系统研究了基于共识的捆绑算法(Consensus-Based Bundle Algorithm, CBBA)在多智能体多任务分配中的应用,重点聚焦于远程太空船交会与维修任务中的相对运动规划(RPO)问题。通过构建多航天器协同任务场景,采用Matlab代码实现了CBBA算法的全过程仿真,展示了其在分布式决策框架下高效完成任务分配的能力。研究深入探讨了任务收益建模、路径规划约束、通信延迟与动态重规划等关键环节,验证了CBBA在确保任务分配一致性、避免资源冲突、适应动态环境变化以及优化整体任务效能方面的优越性能,为复杂空间任务中的自主协同提供了可靠的技术路径。; 适合人群:具备控制理论、航天动力学、分布式优化或多智能体系统等相关背景,从事航天任务规划、智能优化算法研究或相关工程实践的研究生、科研人员及航空航天领域工程师。; 使用场景及目标:①为多航天器在轨服务(如交会对接、空间维修)提供高效、鲁棒的分布式任务分配解决方案;②深入理解CBBA算法的核心机制及其在高动态、强约束空间任务中的适应性与优化潜力;③推动分布式人工智能算法在航天工程实际系统中的集成与应用验证。; 阅读建议:建议读者结合提供的Matlab代码,重点剖析任务建模逻辑、收益函数设计、共识迭代过程及收敛性分析模块,通过修改场景参数进行仿真实验,以深化对多智能体协同决策机制与算法性能边界条件的理解。
内容概要:本文研究了一种计及自适应预测修正的微电网模型预测控制(MPC)优化调度方法,并提供了基于Matlab的完整代码实现。该方法融合自适应预测机制与MPC滚动优化框架,有效应对微电网中可再生能源出力波动、负荷需求不确定性等多重挑战,显著提升调度决策的精度与系统鲁棒性。通过构建动态反馈校正机制,实修正预测模型误差,优化未来段的运行策略,实现对微电网内部分布式电源、储能系统及可控负荷的协同调控,达成经济性、稳定性与环保性多目标的综合优化。所提方法具有较强的工程实用性与理论价值,为现代智能微电网的能量管理系统提供了可靠的技术支撑。; 适合人群:具备电力系统分析、优化控制理论基础及Matlab编程能力的研究生、科研人员,以及从事微电网、智能配电系统、新能源并网等领域技术研发的工程技术人员。; 使用场景及目标:①应用于高校与科研机构开展微电网优化调度算法的仿真研究与性能验证;②服务于电力企业或能源科技公司开发先进能量管理系统(EMS),提升微电网运行效率与可再生能源消纳能力;③作为自动化、电气工程等专业的高级教学案例,帮助学生深入理解MPC在复杂能源系统中的建模、优化与反馈控制全过程。; 阅读建议:建议读者结合Matlab代码逐模块分析算法实现流程,重点掌握预测模型构建、滚动优化求解及反馈修正机制的设计逻辑,可通过调整预测域、权重系数与扰动场景等参数进行仿真实验,深入理解各环节对系统性能的影响。

87,989

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧