其实我也不会,老实教人学怕误人子弟,但是抱着毁人不倦的精神还是糊弄糊弄个别小白吧,最起码能加点原创。
下面以表单为例,打开官方项目,版本为FineUI_4.1.1,打开form_compare页,右键在浏览器中查看,右键查看源文件,这次要做的是前台通过按钮点击生成form及与后台的交互。
1.生成一个行
form_compare里有文本行 文本框1 ,源文件里搜 文本框1
看到了什么,fieldLable就是‘文本框 1‘,说明生成的lable和后面的input(就是textbox)是一个元素,在 form_compare.aspx里也是一个元素,那太好办了,直接拿过来,这里要注意写在</form>后面,为啥呢,例子里都这么写的。
var f4肯定不能要了,一看源文件就是f1.f2.f3 一直生成下来的,改;
f_state 不知道干啥的,也没东西,不管;id,肯定不能重复,先扔掉;
fieldLabel 就是前面标题的意思,改成自己喜欢的;
lablelWidth字面就是宽度,不管理了;
anchor 不知道,不管了;
name 先放着;
allowBlank 不知道是啥,不管了;
成这样了
F.ready(function () { var row = Ext.create('Ext.form.field.Text', { f_state: {}, fieldLabel: "自己喜欢的", labelWidth: 180, anchor: "0", name: "SimpleForm1$TextBox1", allowBlank: false }); });
干有元素不行啊,还加到表单里,extjs 当然提供了表单的插入方法,开api ,找到form.panel 为啥:
明显f15就是表单,items就是表单的项,f4在里面呢。下面就是猜了,好多属性和方法
新增插入的关键词:add,insert,new 挨个搜,不行就全看一边,恩搜到了
写的太清楚了,昨天已经看到F('ID')就是获取元素,那就试试吧
F('<% =SimpleForm1.ClientID %>').insert(3, row);
位置是我随便写的。
2.生成一个按钮
恩,我把重置也沾过来了,同样插入
3.给添加按钮写方法
昨天已经看见了handler就是点击事件,把新增行的事件写在方法里就可以了。
F.ready(function () { var mybutton = Ext.create('Ext.button.Button', { text: "添加自己喜欢的", cls: "marginr", handler: function () { add(); //重置表单 F('SimpleForm1').f_reset(); } }); F('<% =SimpleForm1.ClientID %>').insert(13, mybutton); }); window.row_nub = 0; function add() { row_nub++; var row = Ext.create('Ext.form.field.Text', { f_state: {}, fieldLabel: "自己喜欢的" + row_nub, labelWidth: 180, anchor: "0", name: "SimpleForm1$TextBox1", allowBlank: false }); F('<% =SimpleForm1.ClientID %>').insert(3, row); }
OK,完成了,就不贴效果了。
恩,还会扩展 text的change回发及改text的颜色。该回家了不写了。