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

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

进行编辑后


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

问题就是怎么对编辑时的combo进行赋值,让它能正常显示文本。还有后面的时间控件也是这个问题,时间控件绑定的值都是Date(1438272000000)这样的文本
...全文
464 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都没人用吗?高手何在
内容概要:本文介绍了一个基于Python的无人机三维路径规划项目,采用差分进化算法(DE)在复杂三维环境中自动生成安全、高效的飞行路径。项目构建了包含起点、终点和多个长方体障碍物的三维空间模型,通过将路径编码为中间航点向量,利用差分进化进行全局优化。适应度函数综合考量路径长度、碰撞惩罚、安全距离、转弯代价、爬升能耗和高度约束,确保生成的路径在安全性、平滑性和可行性之间取得平衡。优化后还引入路径简化机制,删除冗余航点并检测直连安全性,以减少航点数量并提升可执行性。程序输出包括三维路径图、障碍物可视化、适应度收敛曲线及各项性能指标,支持后续扩展至真实地图、地形模型和动力学仿真。; 适合人群:具备Python编程基础,熟悉NumPy、matplotlib等库,从事无人机、智能优化、路径规划相关研究或开发的科研人员、研究生及工程师(工作年限1-3年或有相关项目经验者); 使用场景及目标:①解决城市、山区、工业区等复杂三维环境下的无人机避障路径规划问题;②学习差分进化算法在连续空间优化中的应用;③为低空物流、应急救援、巡检监测等实际场景提供算法原型与二次开发基础; 阅读建议:建议结合提供的完整代码与可视化结果进行实践,重点关注环境建模、适应度函数设计、差分进化实现与路径后处理逻辑,可通过调整参数(如种群规模、权重系数)观察优化效果变化,深入理解多目标权衡与算法调参策略。

87,984

社区成员

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

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