ext window里面form动态生成的组件问题

又找到怎么修改昵称了 2012-08-06 08:21:32
activityGrid.on('rowdblclick', function(grid, rowIndex, e) {//在grid上面绑定一个双击事件
....
var activityRuleArr = record.get('activityRule').split('|');//从record中拿到一个字段切成数组.
//这个String字段如: aa|bb|cc 在添加的时候,把多个文本拼成这样的一个字段,然后存到数据库.

me.activityRuleField = activityRuleArr.length;//一个全局变量存放这个字段长度

for (var i = 0; i < activityRuleArr.length; i++) {// 根据数组长度动态生成textfield同时设置值
var _textfield = {
xtype : 'textfield',
anchor : '48%',
fieldLabel : '活动规则' + (i + 1),
name : 'activityRule' + (i + 1),
value : activityRuleArr[i]
};
me.activityForm.add(_textfield);
};
};

//下面是window里面放一个form然后在form里面有一个按钮,可以点击按钮动态生成文本框.
{
xtype : 'button',
text : '添加规则',
handler : function() {
var k = me.activityRuleField++;//拿到数组长度,在其基础上生成文本框

for (var i = 0; i < me.activityRuleField; i++) {
var _textfield = {
xtype : 'textfield',
anchor : '48%',
fieldLabel : '活动规则' + (k + 1),
name : 'activityRule' + (k + 1)
};
};
me.activityForm.add(_textfield);//添加到form里面
me.activityForm.doLayout();//重新布局
}
}
------------------------------------------------------------

现在我加了这个动态的可以取值设置值,但是当多次(2次以上)点击,就会出现多余的文本框,就是我这个字段有3个长度时,对应生成三个文本框,2次双击以后就会出现6个文本框,有三个是空的,而且在我调用 _form.getForm().reset()时这几个动态加进来文本框不能清空,点击第二条不同数据时也会带上前一次的文本框数据...
还有个问题想请教,动态加进来的组件怎么控制放在form里面的位置..
请问下这个动态的要怎么弄啊?.问题搞了很久...希望得到高手指点,先谢谢大家了..
...全文
487 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
把你写过的类似的例子发一个给我看看吧,我直接写死了给它10个框框就没有这样的问题...
就是那种处理拆分一个字段,在生成对面的文本框,最好发个小项目什么的.现在正在学习ext好多东西要学.

282228859@qq.com 谢谢咯.
未知数 2012-08-08
  • 打赏
  • 举报
回复
你的问题描述有些看不太明白,不过就能明白的说
,上面的代码也大大的有问题
照理说你这个很容易实现,从数据库读出字段,解析,页面加载后就生成相应ext文本框。
添加按钮的点击事件里动态添加一个文本框,保存按钮事件里遍历该form下的文本框,拼接成字符串传递到后台存储,就ok了;或者保存时把form提交到后台处理也可以。应该没什么难度,我经常遇到这种情况,没觉得有什么问题存在
还是你自己的代码逻辑问题,这个还是自己调试吧

  • 打赏
  • 举报
回复
那怎么解决呢?..可否提供一个方案.

我要做就是把后台传来的一个对象解析放在form中展现,其中有两个字段: 提示, 规则 分很多条(提示1提示2提示3...),录入的时候给给他一个按钮,让他点击生成一个文本框,要几条就点几次然后我在拼成aa|bb|cc这样的一个字段丢到后台去..现在录入没有问题,导出来也可以显示,只是放到这个事件有点不合理..该怎么弄好?
然后就是哪个知道为什么多次点击总会带着前面的数据(form里有很多字段,但是只会带上动态添加的那些,其他的则不会带,清空的时候也是这样,不能清楚动态添加进来的那些,好像这几个添加的不属于这个form一样,可以打印的时候可以看到他们和其他字段也是存在form同级里面.)
未知数 2012-08-07
  • 打赏
  • 举报
回复
前面一个问题明显是你的代码逻辑问题


me.activityRuleField = activityRuleArr.length;//一个全局变量存放这个字段长度

for (var i = 0; i < activityRuleArr.length; i++) {// 根据数组长度动态生成textfield同时设置值
var _textfield = {
xtype : 'textfield',
anchor : '48%',
fieldLabel : '活动规则' + (i + 1),
name : 'activityRule' + (i + 1),
value : activityRuleArr[i]
};
me.activityForm.add(_textfield);
};

这段代码,每次都添加几个文本框,又不移除,当然是越来越多

第二个问题,同html布局一样的,可以用其他无内容组件填充把组件挤到需要位置,也可以用margin-left,margin-top属性来控制位置,配置组件style:'margin-left:10px;margin-top:10px;',labelStyle:'margin-left:...'

87,996

社区成员

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

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