- 浏览: 3008897 次
- 性别:
- 来自: 河南
文章分类
- 全部博客 (340)
- Java综合 (26)
- 程序人生 (53)
- RIA-ExtJS专栏 (18)
- RIA-mxGraph专栏 (4)
- RIA-Flex4专栏 (43)
- 框架-Spring专栏 (16)
- 框架-持久化专栏 (22)
- 框架-Struts2专栏 (11)
- 框架-Struts专栏 (12)
- SQL/NOSQL (12)
- 报表/图表 (2)
- 工作流 (5)
- XML专栏 (4)
- 日常报错解决方案 (5)
- Web前端-综合 (12)
- Web/JSP (14)
- Web前端-ajax专栏 (14)
- Web前端-JQuery专栏 (9)
- IDE技巧 (6)
- FILE/IO (14)
- 远程服务调用 (2)
- SSO单点登录 (2)
- 资源分享 (22)
- 云计算 (1)
- 项目管理 (3)
- php专栏 (1)
- Python专栏 (2)
- Linux (1)
- 缓存系统 (1)
- 队列服务器 (1)
- 网络编程 (0)
- Node.js (1)
最新评论
-
hui1989106a:
我的也不能解压,360和好压都试了,都不行
《Spring in Action》完整中文版分享下载 -
temotemo:
这些example有些过时了,官方建议使用HBase-1.0 ...
Java操作Hbase进行建表、删表以及对数据进行增删改查,条件查询 -
zy8102:
非常感谢~
HeadFirst系列之七:《深入浅出SQL》原版高清PDF电子书分享下载 -
zy8102:
重命名了一下搞定了
HeadFirst系列之七:《深入浅出SQL》原版高清PDF电子书分享下载 -
zy8102:
为什么下载以后老解压不了呢?
HeadFirst系列之七:《深入浅出SQL》原版高清PDF电子书分享下载
第一种方式,经过仔细拓展后的,看起来不错,其实有点毛病就是点击下拉列表出来后在点击节点想分开时却有缩了回去,自己解决吧
ComoboBoxTree-min.js
Ext.ux.ComboBoxTree = function() {
this.treeId = Ext.id() + "-tree";
this.maxHeight = arguments[0].maxHeight || arguments[0].height
|| this.maxHeight;
this.tpl = new Ext.Template('<tpl for="."><div style="height:'
+ this.maxHeight + 'px"><div id="' + this.treeId
+ '"></div></div></tpl>');
this.store = new Ext.data.SimpleStore( {
fields : [],
data : [ [] ]
});
this.selectedClass = "";
this.mode = "local";
this.triggerAction = "all";
this.onSelect = Ext.emptyFn;
this.editable = false;
this.selectNodeModel = arguments[0].selectNodeModel || "exceptRoot";
Ext.ux.ComboBoxTree.superclass.constructor.apply(this, arguments)
};
Ext.extend(Ext.ux.ComboBoxTree, Ext.form.ComboBox, {
expand : function() {
Ext.ux.ComboBoxTree.superclass.expand.call(this);
if (!this.tree.rendered) {
this.tree.height = this.maxHeight;
this.tree.border = false;
this.tree.autoScroll = true;
if (this.tree.xtype) {
this.tree = Ext.ComponentMgr.create(this.tree, this.tree.xtype)
}
this.tree.render(this.treeId);
var B = this;
this.tree.on("click", function(F) {
var E = (F == B.tree.getRootNode());
var D = B.selectNodeModel;
var C = F.isLeaf();
if (E && D != "all") {
return
} else {
if (D == "folder" && C) {
return
} else {
if (D == "leaf" && !C) {
return
}
}
}
B.setValue(F);
B.collapse()
});
var A = this.tree.getRootNode();
if (!A.isLoaded()) {
A.reload()
}
}
},
setValue : function(A) {
var B = A.text;
this.lastSelectionText = B;
if (this.hiddenField) {
this.hiddenField.value = A.id
}
Ext.form.ComboBox.superclass.setValue.call(this, B);
this.value = A.id
},
getValue : function() {
return typeof this.value != "undefined" ? this.value : ""
}
});
Ext.reg("combotree", Ext.ux.ComboBoxTree);
ComboBoxTree.js
Ext.ux.ComboBoxTree = function(){
this.treeId = Ext.id()+'-tree';
this.maxHeight = arguments[0].maxHeight || arguments[0].height || this.maxHeight;
this.tpl = new Ext.Template('<tpl for="."><div style="height:'+this.maxHeight+'px"><div id="'+this.treeId+'"></div></div></tpl>');
this.store = new Ext.data.SimpleStore({fields:[],data:[[]]});
this.selectedClass = '';
this.mode = 'local';
this.triggerAction = 'all';
this.onSelect = Ext.emptyFn;
this.editable = false;
//all:所有结点都可选中
//exceptRoot:除根结点,其它结点都可选
//folder:只有目录(非叶子和非根结点)可选
//leaf:只有叶子结点可选
this.selectNodeModel = arguments[0].selectNodeModel || 'exceptRoot';
Ext.ux.ComboBoxTree.superclass.constructor.apply(this, arguments);
}
Ext.extend(Ext.ux.ComboBoxTree,Ext.form.ComboBox, {
expand : function(){
Ext.ux.ComboBoxTree.superclass.expand.call(this);
if(!this.tree.rendered){
this.tree.height = this.maxHeight;
this.tree.border=false;
this.tree.autoScroll=true;
if(this.tree.xtype){
this.tree = Ext.ComponentMgr.create(this.tree, this.tree.xtype);
}
this.tree.render(this.treeId);
var combox = this;
this.tree.on('click',function(node){
var isRoot = (node == combox.tree.getRootNode());
var selModel = combox.selectNodeModel;
var isLeaf = node.isLeaf();
if(isRoot && selModel != 'all'){
return;
}else if(selModel=='folder' && isLeaf){
return;
}else if(selModel=='leaf' && !isLeaf){
return;
}
combox.setValue(node);
combox.collapse();
});
var root = this.tree.getRootNode();
if(!root.isLoaded())
root.reload();
}
},
setValue : function(node){
var text = node.text;
this.lastSelectionText = text;
if(this.hiddenField){
this.hiddenField.value = node.id;
}
Ext.form.ComboBox.superclass.setValue.call(this, text);
this.value = node.id;
},
getValue : function(){
return typeof this.value != 'undefined' ? this.value : '';
}
});
Ext.reg('combotree', Ext.ux.ComboBoxTree);
产生节点的JSP页面getNodes.jsp
<%@ page language="java" contentType="text/html; charset=utf-8" %>
<%
String id = request.getParameter("node");
String listNode = "[";
if(id.length()<5){
for(int i=1;i<6;i++){
listNode += "{id:'"+i+"_"+id+"',text:'folder"+i+"_"+id+"'},";
}
listNode = listNode.substring(0,listNode.length()-1) + "]";
}else{
for(int i=1;i<6;i++){
listNode += "{id:'"+i+"_"+id+"',text:'node"+i+"_"+id+"',leaf:true},";
}
listNode = listNode.substring(0,listNode.length()-1) + "]";;
}
out.print(listNode);
%>
<%@ page language="java" contentType="text/html; charset=utf-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<c:set var="base" value="${pageContext.request.contextPath}" />
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Customizing ComboBoxTree</title>
<link rel="stylesheet" type="text/css" href="${base}/extjs3.1/resources/css/ext-all.css" />
<script type="text/javascript" src="${base}/extjs3.1/adapter/ext/ext-base.js"></script>
<script type="text/javascript" src="${base}/extjs3.1/ext-all.js"></script>
<script type="text/javascript">
var path="${base}/";
</script>
<script type="text/javascript">
Ext.BLANK_IMAGE_URL = path+'extjs3.1/resources/images/default/s.gif';;
Ext.onReady(function(){
var comboxWithTree = new Ext.form.ComboBox({
store:new Ext.data.SimpleStore({fields:[],data:[[]]}),
editable:false,
mode: 'local',
triggerAction:'all',
maxHeight: 200,
tpl: "<tpl for='.'><div style='height:200px'><div id='tree'></div></div></tpl>",
selectedClass:'',
onSelect:Ext.emptyFn
});
var tree = new Ext.tree.TreePanel({
loader: new Ext.tree.TreeLoader({dataUrl:path+'ComboBoxTree/getNodes.jsp'}),
border:false,
root:new Ext.tree.AsyncTreeNode({text: '模板根目录',id:'0'})
});
tree.on('click',function(node){
comboxWithTree.setValue(node.text);
comboxWithTree.collapse();
});
comboxWithTree.on('expand',function(){
tree.render("tree");
});
comboxWithTree.render('comboxWithTree');
});
</script>
<body>
<div>
<div id="comboxWithTree">
</div>
<div id="tree"></div>
</div>
</body>
</html>
发表评论
-
ExtJS之上传文件示例【struts2方式】
2010-07-07 15:37 26814今天突然想起来以前的关于EXT的上传的文章没有贴出来,现在贴出 ... -
ExtTree之右键菜单增删改及拖拽同步数据库
2010-05-06 23:42 6948单凭一个ExtTree也要学习 ... -
Ext各种开发示例下载
2010-05-02 18:27 2927刚浏览网页时,无意间看到一位仁兄辛苦搜集的好多Ext的demo ... -
Ext之Tree与Tab组合问题
2010-04-30 12:36 3497ExtTree与ExtTab结合的时候经常会出现点击左边Tre ... -
推荐一位两位Ext高人的文章
2010-04-25 08:03 1692http://ext.group.iteye.com/grou ... -
带搜索的ExtGrid终于能分页了
2010-04-25 07:14 3309前天下午参照了一位网友的说法,为了显示查询后的结果采用了下面的 ... -
Ext之ExtGrid增删改查询回顾总结
2010-04-17 10:32 4001学习Ext已经有些许时间了,发现实际运用过程中ExtGrid系 ... -
Ext树图标从http://extjs.com/s.gif上自动下载新发现
2010-04-13 17:09 4700关于EXT树图标自动下载,我又发现了一点问题,我分几种情况说下 ... -
ExtJS之Ext.Ajax.request用法详解
2010-04-11 11:41 102525Ext.Ajax.request({ ... -
ExtJS之实现华丽的皮肤主题更换
2010-04-10 23:24 22350extjs的默认皮肤很好看,但是我们还可以变换样式切换其他皮肤 ... -
ExtJS嵌入网页要解决iframe自动适应窗体大小的问题
2010-04-09 19:10 9520最近在ExtJS开发中用到了iframe标签在TabPane ... -
ExtJS使用技巧小结
2010-04-08 23:47 2900第一点:更换ExtTree ... -
ExtJS之修改编辑时的表单加载
2010-04-06 20:16 5735Ext表单加载通常是这么写的 bookForm.f ... -
ExtJS之调试功能,特棒
2010-04-06 19:10 7150在ExtJS开发过程中,经常会遇到怎么也找不到错误 ... -
ExtJS之GridPanel分页原理解读
2010-04-05 12:19 7480一般在JS代码中这样设定store.load({para ... -
ExtJS小试牛刀之表单验证
2010-04-03 15:12 3778对ExtJS基础稍微有所了解的人都知道,表单验证 ... -
使用ExtJS之Grid有感而发,贡献示例给大家
2010-03-17 17:18 3590最近研究ExtJs觉得官方示例代码有些过多,尤其是Gri ...
相关推荐
FPGA状态机的两种写法 状态机是计算机科学和电子工程中的一种基本概念,广泛应用于硬件控制电路设计和软件开发。有限状态机(Finite State Machine,FSM)是一种常用的状态机模型,能够将复杂的控制逻辑分解成有限...
在firefox火狐浏览器中如何指定下拉列表的宽度,本文提供两种不同的写法,需要了解的朋友可以参考下 在IE下,我们只要指定select的宽度即可.如: 复制代码代码如下:<select name=”ddlDept” id=”ddlDept” style=...
ThreadPoolManager:Executors.newFixedThreadPool(num * 2);// 创建一个可重用固定线程数的线程池,以共享的无界队列方式来运行这些线程 threadPool: 线程池 创建线程池,销毁线程池,添加新任务
首先,让我们来看看MVP的两种写法: 1. 接口型MVP(Interface-based MVP) 在接口型MVP中,Presenter层通过接口与View和Model进行交互。这样做的好处是提高了代码的解耦度,使得Presenter和View可以独立地进行单元...
在JavaScript中,我们可以用以下两种方式实现树形结构的递归遍历: 1. **普通写法**:这种写法通常涉及数组和索引来表示节点及其关系。例如,一个节点可能包含一个子节点数组,递归函数会遍历这个数组并对每个子...
以下是两种常见的Java输入输出流的写法及其详细解释: 1. 字节流: - **FileInputStream** 和 **FileOutputStream**:这是处理文件输入输出的基本字节流类。`FileInputStream` 用于从文件读取字节,而 `...
动态树是一种数据结构,它在计算机科学中被广泛应用于各种算法和问题解决中。相比于静态树,动态树能够适应数据的变化,允许插入、删除和查询操作高效地进行。本篇文章将深入探讨动态树的实现原理、转化过程以及相关...
下面将详细介绍两种不同的分页实现方法。 方法一:基于请求参数的分页 1. **Servlet处理请求**:当用户点击分页链接时,浏览器发送一个HTTP请求,其中包含当前页码作为请求参数。Servlet接收到请求后,根据页码...
本文将探讨“状态机的两种写法”,即横式和竖式,以及它们各自的特点和适用场景。 首先,让我们理解状态机的基本概念。状态机是一种数学模型,用于表示一个系统随时间变化的不同状态,以及在不同事件触发下状态之间...
### Java路径两种写法详解 #### 一、引言 在Java编程中,处理文件路径是非常常见的需求之一。为了确保程序具有良好的可移植性与兼容性,了解如何正确地使用路径变得尤为重要。本文将深入探讨Java中两种常用的路径...
下面,我们将深入探讨这两种“傻瓜式”写法。 方法一:使用内置函数 在许多编程语言中,都有内置的函数或方法可以直接将ASCII码转换为字符。例如,在Python中,我们可以使用chr()函数来完成这个任务。假设我们有一...
FX5U-DDRVI指令-相对定位两种写法 - 方法一:梯形图 方法二:梯形图嵌入ST语言
使用jQuery实现邮箱下拉列表自动补全功能,主要涉及到了JavaScript、jQuery库以及前端基础的DOM操作、事件处理等知识点。下面将详细分解这一过程所需掌握的知识点。 ### jQuery基础 - **引入jQuery库**:项目中...
三菱FX5U-DDRVA指令-相对定位两种写法: 方法一:梯形图 方法二:梯形图内嵌ST语言
之前写过这个《javascript下拉列表中显示树形菜单的实现方法》菜单的体现,但是在写了之后就发现了,不太适合,高度要精准控制,并且还不是很好看。现在采用table来封装,我们知道table的每一行写满了之后,下一行会...
layui下拉列表的`change`事件为开发者提供了一种灵活的方式来处理用户的选择行为,不仅可以获取到选择的值,还能对选择结果做出响应,如更新其他表单元素或显示相应内容。通过`lay-filter`属性和`form.on`方法,可以...
在金融交易领域,MT4(MetaTrader 4)是一个广泛使用的交易平台,支持自动化交易和自定义技术指标。MQL4是其内置的编程语言...无论选择哪种方法,了解这两种写法都有助于提升MQL4编程技能,更好地定制自己的交易策略。
这个压缩包提供了两种不同的解决方案,旨在帮助开发者解决PNG透明度的另类写法问题。下面将详细探讨这两种方法。 ### 解决方案一:使用库函数处理PNG透明 这种方法通常涉及使用特定的编程语言库来处理PNG图像的...
FX5U-TBL指令-单独表格运行指令-直线插补-两种写法