- 浏览: 334609 次
- 性别:
- 来自: 沈阳
文章分类
最新评论
-
znfsky:
找了好一会,原来要手动加链接库,赞一个
codeblocks处理undefined reference to `pthread_create' -
qiankai86:
Thank you!
java平均分配算法 -
yl419440513:
表名称和列名称中文乱码怎么解决呢
ResultSet 对象getTables()的用法 获取表的相关信息 -
sumaolin:
写的挺详细的啊
html marque元素标签属性的参数说明 -
brown802:
我都加过这个包啦,还是有错误
Unable to find parent packages json-default
关键字: extjs学习
1、效果如图
2、 引入TreeField控件(转载)
Js代码
1.Ext.form.TreeField = Ext.extend(Ext.form.TriggerField, {
2. /**
3. * @cfg {Boolean} readOnly
4. * 设置为只读状态
5. *
6. */
7. readOnly : true ,
8. /**
9. * @cfg {String} displayField
10. * 用于显示数据的字段名
11. *
12. */
13. displayField : 'text',
14. /**
15. * @cfg {String} valueField
16. * 用于保存真实数据的字段名
17. */
18. valueField : null,
19. /**
20. * @cfg {String} hiddenName
21. * 保存真实数据的隐藏域名
22. */
23. hiddenName : null,
24. /**
25. * @cfg {Integer} listWidth
26. * 下拉框的宽度
27. */
28. listWidth : null,
29. /**
30. * @cfg {Integer} minListWidth
31. * 下拉框最小宽度
32. */
33. minListWidth : 50,
34. /**
35. * @cfg {Integer} listHeight
36. * 下拉框高度
37. */
38. listHeight : null,
39. /**
40. * @cfg {Integer} minListHeight
41. * 下拉框最小高度
42. */
43. minListHeight : 50,
44. /**
45. * @cfg {String} dataUrl
46. * 数据地址
47. */
48. dataUrl : null,
49. /**
50. * @cfg {Ext.tree.TreePanel} tree
51. * 下拉框中的树
52. */
53. tree : null,
54. /**
55. * @cfg {String} value
56. * 默认值
57. */
58. value : null,
59. /**
60. * @cfg {String} displayValue
61. * 用于显示的默认值
62. */
63. displayValue : null,
64. /**
65. * @cfg {Object} baseParams
66. * 向后台传递的参数集合
67. */
68. baseParams : {},
69. /**
70. * @cfg {Object} treeRootConfig
71. * 树根节点的配置参数
72. */
73. treeRootConfig : {
74. id : ' ',
75. text : '全国',
76. draggable:false
77. },
78. /**
79. * @cfg {String/Object} autoCreate
80. * A DomHelper element spec, or true for a default element spec (defaults to
81. * {tag: "input", type: "text", size: "24", autocomplete: "off"})
82. */
83. defaultAutoCreate : {tag: "input", type: "text", size: "24", autocomplete: "off"},
84.
85. initComponent : function(){
86. Ext.form.TreeField.superclass.initComponent.call(this);
87. this.addEvents(
88. 'select',
89. 'expand',
90. 'collapse',
91. 'beforeselect'
92. );
93.
94. },
95. initList : function(){
96. if(!this.list){
97. var cls = 'x-treefield-list';
98.
99. this.list = new Ext.Layer({
100. shadow: this.shadow, cls: [cls, this.listClass].join(' '), constrain:false
101. });
102.
103. var lw = this.listWidth || Math.max(this.wrap.getWidth(), this.minListWidth);
104. this.list.setWidth(lw);
105. this.list.swallowEvent('mousewheel');
106.
107. this.innerList = this.list.createChild({cls:cls+'-inner'});
108. this.innerList.setWidth(lw - this.list.getFrameWidth('lr'));
109. this.innerList.setHeight(this.listHeight || this.minListHeight);
110. if(!this.tree){
111. this.tree = this.createTree(this.innerList);
112. }
113. this.tree.on('click',this.select,this);
114. this.tree.render();
115. }
116. },
117. onRender : function(ct, position){
118. Ext.form.TreeField.superclass.onRender.call(this, ct, position);
119. if(this.hiddenName){
120. this.hiddenField = this.el.insertSibling({tag:'input',
121. type:'hidden',
122. name: this.hiddenName,
123. id: (this.hiddenId||this.hiddenName)},
124. 'before', true);
125. this.hiddenField.value =
126. this.hiddenValue !== undefined ? this.hiddenValue :
127. this.value !== undefined ? this.value : '';
128. this.el.dom.removeAttribute('name');
129. }
130. if(Ext.isGecko){
131. this.el.dom.setAttribute('autocomplete', 'off');
132. }
133.
134.
135. this.initList();
136. },
137. select : function(node){
138. if(this.fireEvent('beforeselect', node, this)!= false){
139. this.onSelect(node);
140. this.fireEvent('select', this, node);
141. }
142. },
143. onSelect:function(node){
144. this.setValue(node);
145. this.collapse();
146. },
147. createTree:function(el){
148. var Tree = Ext.tree;
149.
150. var tree = new Tree.TreePanel({
151. el:el,
152. autoScroll:true,
153. animate:true,
154. containerScroll: true,
155. rootVisible: false,
156. loader: new Tree.TreeLoader({
157. dataUrl : this.dataUrl,
158. baseParams : this.baseParams
159. })
160. });
161.
162. var root = new Tree.AsyncTreeNode(this.treeRootConfig);
163. tree.setRootNode(root);
164. return tree;
165. },
166.
167. getValue : function(){
168. if(this.valueField){
169. return typeof this.value != 'undefined' ? this.value : '';
170. }else{
171. return Ext.form.TreeField.superclass.getValue.call(this);
172. }
173. },
174. setValue : function(node){
175. //if(!node)return;
176. var text,value;
177. if(node && typeof node == 'object'){
178. text = node[this.displayField];
179. value = node[this.valueField || this.displayField];
180. }else{
181. text = node;
182. value = node;
183.
184. }
185. if(this.hiddenField){
186. this.hiddenField.value = value;
187. }
188. Ext.form.TreeField.superclass.setValue.call(this, text);
189. this.value = value;
190. },
191. onResize: function(w, h){
192. Ext.form.TreeField.superclass.onResize.apply(this, arguments);
193. if(this.list && this.listWidth == null){
194. var lw = Math.max(w, this.minListWidth);
195. this.list.setWidth(lw);
196. this.innerList.setWidth(lw - this.list.getFrameWidth('lr'));
197. }
198. },
199. validateBlur : function(){
200. return !this.list || !this.list.isVisible();
201. },
202. onDestroy : function(){
203. if(this.list){
204. this.list.destroy();
205. }
206. if(this.wrap){
207. this.wrap.remove();
208. }
209. Ext.form.TreeField.superclass.onDestroy.call(this);
210. },
211. collapseIf : function(e){
212. if(!e.within(this.wrap) && !e.within(this.list)){
213. this.collapse();
214. }
215. },
216.
217. collapse : function(){
218. if(!this.isExpanded()){
219. return;
220. }
221. this.list.hide();
222. Ext.getDoc().un('mousewheel', this.collapseIf, this);
223. Ext.getDoc().un('mousedown', this.collapseIf, this);
224. this.fireEvent('collapse', this);
225. },
226. expand : function(){
227. if(this.isExpanded() || !this.hasFocus){
228. return;
229. }
230. this.onExpand();
231. this.list.alignTo(this.wrap, this.listAlign);
232. this.list.show();
233. Ext.getDoc().on('mousewheel', this.collapseIf, this);
234. Ext.getDoc().on('mousedown', this.collapseIf, this);
235. this.fireEvent('expand', this);
236. },
237. onExpand : function(){
238. var doc = Ext.getDoc();
239. this.on('click',function(){alert(111)},this);
240. },
241. isExpanded : function(){
242. return this.list && this.list.isVisible();
243. },
244. onTriggerClick : function(){
245. if(this.disabled){
246. return;
247. }
248. if(this.isExpanded()){
249. this.collapse();
250. }else {
251. this.onFocus({});
252. this.expand();
253. }
254. this.el.focus();
255. }
256.});
257.Ext.reg('treeField', Ext.form.TreeField);
Ext.form.TreeField = Ext.extend(Ext.form.TriggerField, {
/**
* @cfg {Boolean} readOnly
* 设置为只读状态
*
*/
readOnly : true ,
/**
* @cfg {String} displayField
* 用于显示数据的字段名
*
*/
displayField : 'text',
/**
* @cfg {String} valueField
* 用于保存真实数据的字段名
*/
valueField : null,
/**
* @cfg {String} hiddenName
* 保存真实数据的隐藏域名
*/
hiddenName : null,
/**
* @cfg {Integer} listWidth
* 下拉框的宽度
*/
listWidth : null,
/**
* @cfg {Integer} minListWidth
* 下拉框最小宽度
*/
minListWidth : 50,
/**
* @cfg {Integer} listHeight
* 下拉框高度
*/
listHeight : null,
/**
* @cfg {Integer} minListHeight
* 下拉框最小高度
*/
minListHeight : 50,
/**
* @cfg {String} dataUrl
* 数据地址
*/
dataUrl : null,
/**
* @cfg {Ext.tree.TreePanel} tree
* 下拉框中的树
*/
tree : null,
/**
* @cfg {String} value
* 默认值
*/
value : null,
/**
* @cfg {String} displayValue
* 用于显示的默认值
*/
displayValue : null,
/**
* @cfg {Object} baseParams
* 向后台传递的参数集合
*/
baseParams : {},
/**
* @cfg {Object} treeRootConfig
* 树根节点的配置参数
*/
treeRootConfig : {
id : ' ',
text : '全国',
draggable:false
},
/**
* @cfg {String/Object} autoCreate
* A DomHelper element spec, or true for a default element spec (defaults to
* {tag: "input", type: "text", size: "24", autocomplete: "off"})
*/
defaultAutoCreate : {tag: "input", type: "text", size: "24", autocomplete: "off"},
initComponent : function(){
Ext.form.TreeField.superclass.initComponent.call(this);
this.addEvents(
'select',
'expand',
'collapse',
'beforeselect'
);
},
initList : function(){
if(!this.list){
var cls = 'x-treefield-list';
this.list = new Ext.Layer({
shadow: this.shadow, cls: [cls, this.listClass].join(' '), constrain:false
});
var lw = this.listWidth || Math.max(this.wrap.getWidth(), this.minListWidth);
this.list.setWidth(lw);
this.list.swallowEvent('mousewheel');
this.innerList = this.list.createChild({cls:cls+'-inner'});
this.innerList.setWidth(lw - this.list.getFrameWidth('lr'));
this.innerList.setHeight(this.listHeight || this.minListHeight);
if(!this.tree){
this.tree = this.createTree(this.innerList);
}
this.tree.on('click',this.select,this);
this.tree.render();
}
},
onRender : function(ct, position){
Ext.form.TreeField.superclass.onRender.call(this, ct, position);
if(this.hiddenName){
this.hiddenField = this.el.insertSibling({tag:'input',
type:'hidden',
name: this.hiddenName,
id: (this.hiddenId||this.hiddenName)},
'before', true);
this.hiddenField.value =
this.hiddenValue !== undefined ? this.hiddenValue :
this.value !== undefined ? this.value : '';
this.el.dom.removeAttribute('name');
}
if(Ext.isGecko){
this.el.dom.setAttribute('autocomplete', 'off');
}
this.initList();
},
select : function(node){
if(this.fireEvent('beforeselect', node, this)!= false){
this.onSelect(node);
this.fireEvent('select', this, node);
}
},
onSelect:function(node){
this.setValue(node);
this.collapse();
},
createTree:function(el){
var Tree = Ext.tree;
var tree = new Tree.TreePanel({
el:el,
autoScroll:true,
animate:true,
containerScroll: true,
rootVisible: false,
loader: new Tree.TreeLoader({
dataUrl : this.dataUrl,
baseParams : this.baseParams
})
});
var root = new Tree.AsyncTreeNode(this.treeRootConfig);
tree.setRootNode(root);
return tree;
},
getValue : function(){
if(this.valueField){
return typeof this.value != 'undefined' ? this.value : '';
}else{
return Ext.form.TreeField.superclass.getValue.call(this);
}
},
setValue : function(node){
//if(!node)return;
var text,value;
if(node && typeof node == 'object'){
text = node[this.displayField];
value = node[this.valueField || this.displayField];
}else{
text = node;
value = node;
}
if(this.hiddenField){
this.hiddenField.value = value;
}
Ext.form.TreeField.superclass.setValue.call(this, text);
this.value = value;
},
onResize: function(w, h){
Ext.form.TreeField.superclass.onResize.apply(this, arguments);
if(this.list && this.listWidth == null){
var lw = Math.max(w, this.minListWidth);
this.list.setWidth(lw);
this.innerList.setWidth(lw - this.list.getFrameWidth('lr'));
}
},
validateBlur : function(){
return !this.list || !this.list.isVisible();
},
onDestroy : function(){
if(this.list){
this.list.destroy();
}
if(this.wrap){
this.wrap.remove();
}
Ext.form.TreeField.superclass.onDestroy.call(this);
},
collapseIf : function(e){
if(!e.within(this.wrap) && !e.within(this.list)){
this.collapse();
}
},
collapse : function(){
if(!this.isExpanded()){
return;
}
this.list.hide();
Ext.getDoc().un('mousewheel', this.collapseIf, this);
Ext.getDoc().un('mousedown', this.collapseIf, this);
this.fireEvent('collapse', this);
},
expand : function(){
if(this.isExpanded() || !this.hasFocus){
return;
}
this.onExpand();
this.list.alignTo(this.wrap, this.listAlign);
this.list.show();
Ext.getDoc().on('mousewheel', this.collapseIf, this);
Ext.getDoc().on('mousedown', this.collapseIf, this);
this.fireEvent('expand', this);
},
onExpand : function(){
var doc = Ext.getDoc();
this.on('click',function(){alert(111)},this);
},
isExpanded : function(){
return this.list && this.list.isVisible();
},
onTriggerClick : function(){
if(this.disabled){
return;
}
if(this.isExpanded()){
this.collapse();
}else {
this.onFocus({});
this.expand();
}
this.el.focus();
}
});
Ext.reg('treeField', Ext.form.TreeField);
3、使用该控件
Js代码
1.{
2. xtype: 'treeField',
3. name: 'pigSource',
4. fieldLabel: '来源地',
5. emptyText:'选择来源地...',
6. listWidth:200,
7. listHeight:200,
8. readOnly:false,
9. dataUrl:'selectCouty.do'
10. }
{
xtype: 'treeField',
name: 'pigSource',
fieldLabel: '来源地',
emptyText:'选择来源地...',
listWidth:200,
listHeight:200,
readOnly:false,
dataUrl:'selectCouty.do'
}
4、数据来源通过selectCounty.do获取(如下例子)
Java代码
1.@RequestMapping("/selectCouty.do")
2. public String selectCouty(Model model) {
3.
4. List<County> provincelist = null;
5. List<County> citylist = null;
6. List<County> countylist = null;
7. County province = null; // 省级
8. County city; // 市级
9. County county;//县级
10.
11.
12. provincelist = new ArrayList<County>();
13. province = new County("620000", "甘肃省");
14. citylist = new ArrayList<County>();
15. city = new County("620100", "兰州市");
16. countylist = new ArrayList<County>();
17. county = new County("620101", "市辖区");
18. county = new County("620102", "城关区");
19. county = new County("620103", "七里河区");
20. countylist.add(county);
21. city.setChildren(countylist);
22. citylist.add(city);
23. province.setChildren(citylist);
24. provincelist.add(province);
25.
26. JSONArray json = JSONArray.fromObject(provincelist);
27. return JsonUtils.returnJsonModelAndView(model, json);
28. }
1、效果如图
2、 引入TreeField控件(转载)
Js代码
1.Ext.form.TreeField = Ext.extend(Ext.form.TriggerField, {
2. /**
3. * @cfg {Boolean} readOnly
4. * 设置为只读状态
5. *
6. */
7. readOnly : true ,
8. /**
9. * @cfg {String} displayField
10. * 用于显示数据的字段名
11. *
12. */
13. displayField : 'text',
14. /**
15. * @cfg {String} valueField
16. * 用于保存真实数据的字段名
17. */
18. valueField : null,
19. /**
20. * @cfg {String} hiddenName
21. * 保存真实数据的隐藏域名
22. */
23. hiddenName : null,
24. /**
25. * @cfg {Integer} listWidth
26. * 下拉框的宽度
27. */
28. listWidth : null,
29. /**
30. * @cfg {Integer} minListWidth
31. * 下拉框最小宽度
32. */
33. minListWidth : 50,
34. /**
35. * @cfg {Integer} listHeight
36. * 下拉框高度
37. */
38. listHeight : null,
39. /**
40. * @cfg {Integer} minListHeight
41. * 下拉框最小高度
42. */
43. minListHeight : 50,
44. /**
45. * @cfg {String} dataUrl
46. * 数据地址
47. */
48. dataUrl : null,
49. /**
50. * @cfg {Ext.tree.TreePanel} tree
51. * 下拉框中的树
52. */
53. tree : null,
54. /**
55. * @cfg {String} value
56. * 默认值
57. */
58. value : null,
59. /**
60. * @cfg {String} displayValue
61. * 用于显示的默认值
62. */
63. displayValue : null,
64. /**
65. * @cfg {Object} baseParams
66. * 向后台传递的参数集合
67. */
68. baseParams : {},
69. /**
70. * @cfg {Object} treeRootConfig
71. * 树根节点的配置参数
72. */
73. treeRootConfig : {
74. id : ' ',
75. text : '全国',
76. draggable:false
77. },
78. /**
79. * @cfg {String/Object} autoCreate
80. * A DomHelper element spec, or true for a default element spec (defaults to
81. * {tag: "input", type: "text", size: "24", autocomplete: "off"})
82. */
83. defaultAutoCreate : {tag: "input", type: "text", size: "24", autocomplete: "off"},
84.
85. initComponent : function(){
86. Ext.form.TreeField.superclass.initComponent.call(this);
87. this.addEvents(
88. 'select',
89. 'expand',
90. 'collapse',
91. 'beforeselect'
92. );
93.
94. },
95. initList : function(){
96. if(!this.list){
97. var cls = 'x-treefield-list';
98.
99. this.list = new Ext.Layer({
100. shadow: this.shadow, cls: [cls, this.listClass].join(' '), constrain:false
101. });
102.
103. var lw = this.listWidth || Math.max(this.wrap.getWidth(), this.minListWidth);
104. this.list.setWidth(lw);
105. this.list.swallowEvent('mousewheel');
106.
107. this.innerList = this.list.createChild({cls:cls+'-inner'});
108. this.innerList.setWidth(lw - this.list.getFrameWidth('lr'));
109. this.innerList.setHeight(this.listHeight || this.minListHeight);
110. if(!this.tree){
111. this.tree = this.createTree(this.innerList);
112. }
113. this.tree.on('click',this.select,this);
114. this.tree.render();
115. }
116. },
117. onRender : function(ct, position){
118. Ext.form.TreeField.superclass.onRender.call(this, ct, position);
119. if(this.hiddenName){
120. this.hiddenField = this.el.insertSibling({tag:'input',
121. type:'hidden',
122. name: this.hiddenName,
123. id: (this.hiddenId||this.hiddenName)},
124. 'before', true);
125. this.hiddenField.value =
126. this.hiddenValue !== undefined ? this.hiddenValue :
127. this.value !== undefined ? this.value : '';
128. this.el.dom.removeAttribute('name');
129. }
130. if(Ext.isGecko){
131. this.el.dom.setAttribute('autocomplete', 'off');
132. }
133.
134.
135. this.initList();
136. },
137. select : function(node){
138. if(this.fireEvent('beforeselect', node, this)!= false){
139. this.onSelect(node);
140. this.fireEvent('select', this, node);
141. }
142. },
143. onSelect:function(node){
144. this.setValue(node);
145. this.collapse();
146. },
147. createTree:function(el){
148. var Tree = Ext.tree;
149.
150. var tree = new Tree.TreePanel({
151. el:el,
152. autoScroll:true,
153. animate:true,
154. containerScroll: true,
155. rootVisible: false,
156. loader: new Tree.TreeLoader({
157. dataUrl : this.dataUrl,
158. baseParams : this.baseParams
159. })
160. });
161.
162. var root = new Tree.AsyncTreeNode(this.treeRootConfig);
163. tree.setRootNode(root);
164. return tree;
165. },
166.
167. getValue : function(){
168. if(this.valueField){
169. return typeof this.value != 'undefined' ? this.value : '';
170. }else{
171. return Ext.form.TreeField.superclass.getValue.call(this);
172. }
173. },
174. setValue : function(node){
175. //if(!node)return;
176. var text,value;
177. if(node && typeof node == 'object'){
178. text = node[this.displayField];
179. value = node[this.valueField || this.displayField];
180. }else{
181. text = node;
182. value = node;
183.
184. }
185. if(this.hiddenField){
186. this.hiddenField.value = value;
187. }
188. Ext.form.TreeField.superclass.setValue.call(this, text);
189. this.value = value;
190. },
191. onResize: function(w, h){
192. Ext.form.TreeField.superclass.onResize.apply(this, arguments);
193. if(this.list && this.listWidth == null){
194. var lw = Math.max(w, this.minListWidth);
195. this.list.setWidth(lw);
196. this.innerList.setWidth(lw - this.list.getFrameWidth('lr'));
197. }
198. },
199. validateBlur : function(){
200. return !this.list || !this.list.isVisible();
201. },
202. onDestroy : function(){
203. if(this.list){
204. this.list.destroy();
205. }
206. if(this.wrap){
207. this.wrap.remove();
208. }
209. Ext.form.TreeField.superclass.onDestroy.call(this);
210. },
211. collapseIf : function(e){
212. if(!e.within(this.wrap) && !e.within(this.list)){
213. this.collapse();
214. }
215. },
216.
217. collapse : function(){
218. if(!this.isExpanded()){
219. return;
220. }
221. this.list.hide();
222. Ext.getDoc().un('mousewheel', this.collapseIf, this);
223. Ext.getDoc().un('mousedown', this.collapseIf, this);
224. this.fireEvent('collapse', this);
225. },
226. expand : function(){
227. if(this.isExpanded() || !this.hasFocus){
228. return;
229. }
230. this.onExpand();
231. this.list.alignTo(this.wrap, this.listAlign);
232. this.list.show();
233. Ext.getDoc().on('mousewheel', this.collapseIf, this);
234. Ext.getDoc().on('mousedown', this.collapseIf, this);
235. this.fireEvent('expand', this);
236. },
237. onExpand : function(){
238. var doc = Ext.getDoc();
239. this.on('click',function(){alert(111)},this);
240. },
241. isExpanded : function(){
242. return this.list && this.list.isVisible();
243. },
244. onTriggerClick : function(){
245. if(this.disabled){
246. return;
247. }
248. if(this.isExpanded()){
249. this.collapse();
250. }else {
251. this.onFocus({});
252. this.expand();
253. }
254. this.el.focus();
255. }
256.});
257.Ext.reg('treeField', Ext.form.TreeField);
Ext.form.TreeField = Ext.extend(Ext.form.TriggerField, {
/**
* @cfg {Boolean} readOnly
* 设置为只读状态
*
*/
readOnly : true ,
/**
* @cfg {String} displayField
* 用于显示数据的字段名
*
*/
displayField : 'text',
/**
* @cfg {String} valueField
* 用于保存真实数据的字段名
*/
valueField : null,
/**
* @cfg {String} hiddenName
* 保存真实数据的隐藏域名
*/
hiddenName : null,
/**
* @cfg {Integer} listWidth
* 下拉框的宽度
*/
listWidth : null,
/**
* @cfg {Integer} minListWidth
* 下拉框最小宽度
*/
minListWidth : 50,
/**
* @cfg {Integer} listHeight
* 下拉框高度
*/
listHeight : null,
/**
* @cfg {Integer} minListHeight
* 下拉框最小高度
*/
minListHeight : 50,
/**
* @cfg {String} dataUrl
* 数据地址
*/
dataUrl : null,
/**
* @cfg {Ext.tree.TreePanel} tree
* 下拉框中的树
*/
tree : null,
/**
* @cfg {String} value
* 默认值
*/
value : null,
/**
* @cfg {String} displayValue
* 用于显示的默认值
*/
displayValue : null,
/**
* @cfg {Object} baseParams
* 向后台传递的参数集合
*/
baseParams : {},
/**
* @cfg {Object} treeRootConfig
* 树根节点的配置参数
*/
treeRootConfig : {
id : ' ',
text : '全国',
draggable:false
},
/**
* @cfg {String/Object} autoCreate
* A DomHelper element spec, or true for a default element spec (defaults to
* {tag: "input", type: "text", size: "24", autocomplete: "off"})
*/
defaultAutoCreate : {tag: "input", type: "text", size: "24", autocomplete: "off"},
initComponent : function(){
Ext.form.TreeField.superclass.initComponent.call(this);
this.addEvents(
'select',
'expand',
'collapse',
'beforeselect'
);
},
initList : function(){
if(!this.list){
var cls = 'x-treefield-list';
this.list = new Ext.Layer({
shadow: this.shadow, cls: [cls, this.listClass].join(' '), constrain:false
});
var lw = this.listWidth || Math.max(this.wrap.getWidth(), this.minListWidth);
this.list.setWidth(lw);
this.list.swallowEvent('mousewheel');
this.innerList = this.list.createChild({cls:cls+'-inner'});
this.innerList.setWidth(lw - this.list.getFrameWidth('lr'));
this.innerList.setHeight(this.listHeight || this.minListHeight);
if(!this.tree){
this.tree = this.createTree(this.innerList);
}
this.tree.on('click',this.select,this);
this.tree.render();
}
},
onRender : function(ct, position){
Ext.form.TreeField.superclass.onRender.call(this, ct, position);
if(this.hiddenName){
this.hiddenField = this.el.insertSibling({tag:'input',
type:'hidden',
name: this.hiddenName,
id: (this.hiddenId||this.hiddenName)},
'before', true);
this.hiddenField.value =
this.hiddenValue !== undefined ? this.hiddenValue :
this.value !== undefined ? this.value : '';
this.el.dom.removeAttribute('name');
}
if(Ext.isGecko){
this.el.dom.setAttribute('autocomplete', 'off');
}
this.initList();
},
select : function(node){
if(this.fireEvent('beforeselect', node, this)!= false){
this.onSelect(node);
this.fireEvent('select', this, node);
}
},
onSelect:function(node){
this.setValue(node);
this.collapse();
},
createTree:function(el){
var Tree = Ext.tree;
var tree = new Tree.TreePanel({
el:el,
autoScroll:true,
animate:true,
containerScroll: true,
rootVisible: false,
loader: new Tree.TreeLoader({
dataUrl : this.dataUrl,
baseParams : this.baseParams
})
});
var root = new Tree.AsyncTreeNode(this.treeRootConfig);
tree.setRootNode(root);
return tree;
},
getValue : function(){
if(this.valueField){
return typeof this.value != 'undefined' ? this.value : '';
}else{
return Ext.form.TreeField.superclass.getValue.call(this);
}
},
setValue : function(node){
//if(!node)return;
var text,value;
if(node && typeof node == 'object'){
text = node[this.displayField];
value = node[this.valueField || this.displayField];
}else{
text = node;
value = node;
}
if(this.hiddenField){
this.hiddenField.value = value;
}
Ext.form.TreeField.superclass.setValue.call(this, text);
this.value = value;
},
onResize: function(w, h){
Ext.form.TreeField.superclass.onResize.apply(this, arguments);
if(this.list && this.listWidth == null){
var lw = Math.max(w, this.minListWidth);
this.list.setWidth(lw);
this.innerList.setWidth(lw - this.list.getFrameWidth('lr'));
}
},
validateBlur : function(){
return !this.list || !this.list.isVisible();
},
onDestroy : function(){
if(this.list){
this.list.destroy();
}
if(this.wrap){
this.wrap.remove();
}
Ext.form.TreeField.superclass.onDestroy.call(this);
},
collapseIf : function(e){
if(!e.within(this.wrap) && !e.within(this.list)){
this.collapse();
}
},
collapse : function(){
if(!this.isExpanded()){
return;
}
this.list.hide();
Ext.getDoc().un('mousewheel', this.collapseIf, this);
Ext.getDoc().un('mousedown', this.collapseIf, this);
this.fireEvent('collapse', this);
},
expand : function(){
if(this.isExpanded() || !this.hasFocus){
return;
}
this.onExpand();
this.list.alignTo(this.wrap, this.listAlign);
this.list.show();
Ext.getDoc().on('mousewheel', this.collapseIf, this);
Ext.getDoc().on('mousedown', this.collapseIf, this);
this.fireEvent('expand', this);
},
onExpand : function(){
var doc = Ext.getDoc();
this.on('click',function(){alert(111)},this);
},
isExpanded : function(){
return this.list && this.list.isVisible();
},
onTriggerClick : function(){
if(this.disabled){
return;
}
if(this.isExpanded()){
this.collapse();
}else {
this.onFocus({});
this.expand();
}
this.el.focus();
}
});
Ext.reg('treeField', Ext.form.TreeField);
3、使用该控件
Js代码
1.{
2. xtype: 'treeField',
3. name: 'pigSource',
4. fieldLabel: '来源地',
5. emptyText:'选择来源地...',
6. listWidth:200,
7. listHeight:200,
8. readOnly:false,
9. dataUrl:'selectCouty.do'
10. }
{
xtype: 'treeField',
name: 'pigSource',
fieldLabel: '来源地',
emptyText:'选择来源地...',
listWidth:200,
listHeight:200,
readOnly:false,
dataUrl:'selectCouty.do'
}
4、数据来源通过selectCounty.do获取(如下例子)
Java代码
1.@RequestMapping("/selectCouty.do")
2. public String selectCouty(Model model) {
3.
4. List<County> provincelist = null;
5. List<County> citylist = null;
6. List<County> countylist = null;
7. County province = null; // 省级
8. County city; // 市级
9. County county;//县级
10.
11.
12. provincelist = new ArrayList<County>();
13. province = new County("620000", "甘肃省");
14. citylist = new ArrayList<County>();
15. city = new County("620100", "兰州市");
16. countylist = new ArrayList<County>();
17. county = new County("620101", "市辖区");
18. county = new County("620102", "城关区");
19. county = new County("620103", "七里河区");
20. countylist.add(county);
21. city.setChildren(countylist);
22. citylist.add(city);
23. province.setChildren(citylist);
24. provincelist.add(province);
25.
26. JSONArray json = JSONArray.fromObject(provincelist);
27. return JsonUtils.returnJsonModelAndView(model, json);
28. }
发表评论
-
dtree和jquery动态生成树
2010-10-19 21:50 1524http://www.cnblogs.com/skyme/ar ... -
easyUI插件
2010-10-13 20:21 1992相关的文章已经发布到 http://www.cnblogs.c ... -
js压缩工具
2010-07-31 10:21 0http://dean.edwards.name/packer ... -
[Dreamweaver]html源代码自动格式化
2010-07-29 10:08 1750上周做项目的Demo,因为是Web应用,所以先要做很多表态页面 ... -
21个演示展示强大的jQuery特效(转)
2010-07-24 15:15 1083http://www.cnblogs.com/bmate/ar ... -
使用jquery动态修改dom元素属性在IE下的问题
2010-07-17 12:16 2675今天在做程序的过程中,遇到一个问题,就是处理修改click属性 ... -
提高网站性能之 —— 如何对待JavaScript(转)
2010-06-01 11:22 1176在一个页面中,每一个外部JavaScript 及CSS文件都会 ... -
web流程设计器
2010-05-16 09:05 3403首先在网上找到了这样一篇文章,用于制作简单的流程设计软件的基本 ... -
dwr配置spring
2010-05-11 10:19 1346dwr配置spring的配置过程如下,以strust1为例,其 ... -
html marque元素标签属性的参数说明
2010-03-24 16:10 2336功能 创建一个滚动的文本字幕。 参数 directi ... -
js之小鸟飞飞
2010-03-24 16:04 1176http://www.spritely.net/documen ... -
extjs伸缩菜单
2010-03-07 15:37 2088/** * 主页面 one page one appl ... -
开源ajaxfileupload
2009-12-02 12:47 899http://www.alanx.cn/ 在此处可以下载源文 ... -
js首页图片切换效果
2009-11-15 17:59 1908搜狐女人频道首页的JS图片切换效果 http://xiayan ... -
js横向滚动效果
2009-11-11 12:45 3516Jquery : 上下滚动--单行 批量多行 文字图片翻屏 h ... -
js跳转页面方法
2009-11-11 10:01 1795js跳转页面方法大全 <span id="ti ... -
js代码中不能包含汉字
2009-11-10 09:12 1320Java代码 Js代码 1.<script lang ... -
各大门户网站Flash和JS实现的图片幻灯片切换特效代码
2009-11-09 11:24 2194图片幻灯片切换特效代码一、腾讯FLASH广告 比如 http: ... -
在IE的标题栏显示时间的Js
2009-09-15 10:16 1055<html> <head> <t ... -
用JS去掉IE窗口的标题栏,工具栏,地址栏
2009-09-15 10:12 2324http://hi.baidu.com/%CC%C7%B9%F ...
相关推荐
标题中的"ext 下拉树 ext2"指的是使用Ext JS库构建的一个特定版本的下拉树组件,其中"ext2"可能表示使用的是Ext JS的2.x版本。Ext JS是一个强大的JavaScript框架,主要用于构建富客户端Web应用程序,它提供了一系列...
在IT领域,"ext 下拉树demo"是一个典型的前端开发示例,主要用于构建用户界面,特别是在数据管理和展示层级结构时。...对于前端开发者来说,掌握EXT下拉树的实现不仅能提升项目开发效率,还能增强对EXT框架的理解。
在本项目中,"Ext下拉树、下拉表格"指的是使用Ext库实现的两种交互式组件:下拉树(ComboBox with Tree)和下拉表格(ComboBox with Grid)。这两种组件都是在输入框中展示可选择的列表,但呈现形式不同,下拉树以...
采用同步树原理,真正可以直接用的下拉树,,希望对你有帮助
下拉树(Dropdown Tree)是Ext JS中的一种特殊控件,它结合了下拉列表和树结构的功能,通常用于展示层次化的数据,并让用户从中选择一个或多个项。 下拉树的基本结构由两部分组成:一个文本框和一个关联的下拉面板...
【叨、校长】Ext 下拉树插件_ComboTree_xz 是一个基于ExtJS库的扩展组件,用于在用户界面中实现下拉树形选择功能。这个插件将传统的下拉框与树形结构相结合,提供了更加灵活和直观的数据选择方式,尤其适用于需要...
在Ext 4.0版本中,下拉树的实现主要依赖于几个关键组件:`Ext.tree.Panel`(树面板)、`Ext.form.field.Tree`(树形字段)以及可能用到的`Ext.data.TreeStore`(树存储)。下面我们将详细探讨这些知识点: 1. **Ext...
Ext下拉列表树是一种在ExtJS框架中实现的组件,它结合了下拉列表和树形结构的功能,为用户提供了一种交互式的、层次化的选择项。这种组件在数据管理、菜单选择、分类筛选等场景中非常常见,尤其适用于需要展现多级...
利用Ext实现静态树(一次加载所有节点的树) 在今天的IT行业中,树形结构是一种非常常见的数据结构,尤其是在Web应用程序中。在这种情况下,我们通常会遇到一个问题,即如何将树形结构的数据加载到前台,以便用户...
ExtJS 4 下拉树(TreeCombo)是一种组合控件,它将传统的下拉框与树形结构结合在一起,提供了一种在有限空间内展示层级数据的高效方式。这种控件在很多场合都非常实用,例如在需要用户选择分类或者层级结构的场景中...
【Ext 3.x + Ext 2.x 下拉树 Ext.ux.ComboBoxTree】是基于ExtJS框架的一个组件,它结合了下拉框(ComboBox)和树形控件(TreePanel)的功能,提供了一种用户友好的选择界面。在网页应用中,这种控件常用于展示层级...
首先声明:本控件并非原创,但是有我的劳动成果。附件中有使用说明文档。如有问题请给我留言。我当时下下来的时候是这样的:比如有“北京贸易公司”这个节点,输入BJ才能搜索到,修改后可以搜索到节点包含的任意字符...
创建下拉树需要使用`Ext.form.ComboBox`,并配置其`store`为树形数据的`TreeStore`,`displayField`为显示的字段,`valueField`为选定节点时返回的值。此外,可能还需要设置`typeAhead`、`triggerAction`等属性以...
7. **扩展控件**:可能需要创建一个新的组件类,继承自`Ext.form.field.ComboBox`,并覆盖或扩展其默认行为,以实现下拉树的功能。 8. **配置项**:例如,`displayField`定义显示字段,`valueField`定义值字段,`...
Ext3.0 原创下拉树 treeComoBox ,使用简单方便,亲身测试,绝对能用,该树可拉伸高度宽度,参数基本同ComoBox
1. **下拉树组件**:在ExtJS中,树形组件(TreePanel)用于展示层次结构的数据。它支持动态加载、拖放操作、节点展开和折叠等功能。而下拉树是将树形结构嵌入到下拉框中,通常用于选择一组相关的项目,比如文件夹...
在这个特定的情况下,我们讨论的是一个定制的下拉树菜单控件——ComboBoxTree,它在ExtJS4中实现了单选和多选功能,并且具备展开选中指定节点的能力。这个控件在实际项目中已经被广泛使用并证明了其稳定性和实用性,...
在ExtJS4中,多选下拉树(Multi Select Tree)是一种用户界面组件,它结合了下拉菜单和树形结构,允许用户从层级结构中选择多个项目。这个组件在数据管理、分类选择等场景中非常实用。 在实现多选下拉树时,我们...
在ExtJS中,下拉树是通过`Ext.form.field.Tree`类实现的,它继承自`Ext.form.field.ComboBox`,增加了树状结构的功能。`ComboTree.js`可能就是实现了这个功能的JavaScript文件,包含了一些定制化的代码或扩展。 ...
- **渲染:** 下拉树的视图部分由Ext.view.Tree实现,它将数据模型转化为可视化的树结构。 - **交互:** 用户选择节点时,可以选择单个或多个,选择结果会显示在输入框中,同时可以通过监听事件来处理用户的选中...