Extjs 拖拽实验例子
2013-05-03 14:26
351 查看
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>拖拽实验</title>
<!--基本引用文件-->
<link rel="Stylesheet" type="text/css" href="../resources/css/ext-all.css" />
<script type="text/javascript" src="../adapter/ext/ext-base.js"></script>
<script type="text/javascript" src="../ext-all-debug.js"></script>
<script type="text/javascript" src="../build/locale/ext-lang-zh_CN.js"></script>
<!--基本样式-->
<style type="text/css">
body{
font-size:12px;margin: 10px;
}
.block {
clear:left;
margin-top:50px;
border: solid 1px #000;
height:160px;
padding:20px 0 0 20px;
}
.item {
border: 1px #000 solid;
margin-right:10px;
width: 60px;
height: 40px;
text-align:center;
padding-top:20px;
color:White;
float:left;
cursor:pointer;
}
.BorderOver{
border:dashed 2px #00f;
}
</style>
</head>
<body>
<script type="text/javascript">
Ext.onReady(function() {
var proxy = new Ext.dd.DDProxy("proxy");//这一句就可以建立一个随便拖的东东,神奇吧
//(ExtJs的拖动组件分二大类,DDProxy就是要拖动的东西,而DDTarget就是拖动后可以扔进去的目标容器区)
//以下建立了三个拖动源DropSource(继承自DDProxy可以查看官方文档),并标明gruop为dd
var proxy_red = new Ext.dd.DragSource('proxy_red', {group:'dd'});
var proxy_green = new Ext.dd.DragSource('proxy_green', { group:'dd' });
var proxy_black = new Ext.dd.DragSource('proxy_black', { group:'dd' });
//拖动完成的事件
proxy_red.afterDragDrop = function(target, e, id) {
var destEl = Ext.get(id);
var srcEl = Ext.get(this.getEl());
if (destEl.dom.id == "target2") {
if (srcEl.dom.id != "proxy_red") {
destEl.dom.style.border = "solid #000 1px";
alert("此区域仅接受red(红色)色块!");
return false;
}
}
var sColor = srcEl.dom.id.split('_')[1]; //得取拖动源id的后面一部分,即proxy_red后面的red
//destEl.dom.style.backgroundColor = sColor; //设置目标id的背景色
//destEl.dom.style.border = "solid #000 1px";
var beginX = destEl.getX(); //目标区块的X轴初始坐标
var beginY = destEl.getY(); //目标区块的Y轴初始坐标
var eXY = e.getXY();
var dragtargetX = eXY[0];
var dragtargetY = eXY[1];
var X = dragtargetX - beginX;
var Y = dragtargetY - beginY;
alert("x:"+X);alert("y:"+Y);
var TextField35378 = new Ext.form.TextField({id:"TextField35378",
labelSeparator:":" ,labelStyle:"text-align:right",
inputType: 'text', name: '姓名',
allowBlank: true,
fieldLabel: '姓名',
hidden: false, hideLabel: false,
width: 120, x: X, y: Y});
Designer.formPanel.add(TextField35378);
Designer.formPanel.doLayout();
//Designer.target.add(TextField35378);
//Designer.target.doLayout();
//alert(destEl.getX());
};
proxy_red.onDragEnter = function(e, id) {
Ext.get(id).dom.style.border = "dashed #00f 2px";
Ext.get(id).dom.style.backgroundColor = "#fff";
}
proxy_red.onDragOut = function(e, id) {
Ext.get(id).dom.style.border = "solid #000 1px";
}
//为其它拖动源赋值同样的事件处理函数
proxy_green.afterDragDrop = proxy_red.afterDragDrop;
proxy_black.afterDragDrop = proxy_red.afterDragDrop;
proxy_green.onDragEnter = proxy_red.onDragEnter;
proxy_black.onDragEnter = proxy_red.onDragEnter;
proxy_green.onDragOut = proxy_red.onDragOut;
proxy_black.onDragOut = proxy_red.onDragOut;
var target = new Ext.dd.DDTarget('target', 'dd');
//建立拖动目标区(这里的dd与上面拖动源的group:dd相同
//只有相同group的DDProxy/DragSource才会接受)
var target2 = new Ext.dd.DDTarget('target2', 'dd');
Designer.uxForm();
});
</script>
<script language="javascript">
Ext.namespace('Designer');
Designer.uxForm = function (){
var formPanel = new Ext.form.FormPanel({
id:'formpanelid',
header:false,
frame:true,
border:false,
layout:"absolute",
width :600,
height :400,
renderTo:"uxform"
});
Designer.formPanel = formPanel;
var formPanelDropTargetEl = formPanel.body.dom;
var formPanelDropTarget = new Ext.dd.DropTarget(formPanelDropTargetEl, {
id:'targetid',
group : 'dd',
notifyEnter : function(ddSource, e, data) {
//Add some flare to invite drop.
//formPanel.body.stopFx();
//formPanel.body.highlight();
},
notifyDrop : function(ddSource, e, data){
// Reference the record (single selection) for readability
//var selectedRecord = ddSource.dragData.selections[0];
// Load the record into the form
//formPanel.getForm().loadRecord(selectedRecord);
// Delete record from the grid. not really required.
//ddSource.grid.store.remove(selectedRecord);
//return(true);
}
});
Designer.target = formPanelDropTarget;
}
</script>
<div>
<div id="proxy_red" class="item" style="background:red">Red</div>
<div id="proxy_green" class="item" style="background:green">Green</div>
<div id="proxy_black" class="item" style="background:black">Black</div>
<div id="proxy" class="item" style="color:Black">我可以<br/>随便拖</div>
</div>
<br/>
<div id="uxform" style="margin-left:200px;margin-top:120px"></div>
<br/>
<!--
<div id="target" class="block">把上面有颜色的色块拖到我这里试试</div>
<div id="target2" class="block">把上面有颜色的色块拖到我这里试试(此区域仅接受红色块)</div>
-->
</body>
</html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>拖拽实验</title>
<!--基本引用文件-->
<link rel="Stylesheet" type="text/css" href="../resources/css/ext-all.css" />
<script type="text/javascript" src="../adapter/ext/ext-base.js"></script>
<script type="text/javascript" src="../ext-all-debug.js"></script>
<script type="text/javascript" src="../build/locale/ext-lang-zh_CN.js"></script>
<!--基本样式-->
<style type="text/css">
body{
font-size:12px;margin: 10px;
}
.block {
clear:left;
margin-top:50px;
border: solid 1px #000;
height:160px;
padding:20px 0 0 20px;
}
.item {
border: 1px #000 solid;
margin-right:10px;
width: 60px;
height: 40px;
text-align:center;
padding-top:20px;
color:White;
float:left;
cursor:pointer;
}
.BorderOver{
border:dashed 2px #00f;
}
</style>
</head>
<body>
<script type="text/javascript">
Ext.onReady(function() {
var proxy = new Ext.dd.DDProxy("proxy");//这一句就可以建立一个随便拖的东东,神奇吧
//(ExtJs的拖动组件分二大类,DDProxy就是要拖动的东西,而DDTarget就是拖动后可以扔进去的目标容器区)
//以下建立了三个拖动源DropSource(继承自DDProxy可以查看官方文档),并标明gruop为dd
var proxy_red = new Ext.dd.DragSource('proxy_red', {group:'dd'});
var proxy_green = new Ext.dd.DragSource('proxy_green', { group:'dd' });
var proxy_black = new Ext.dd.DragSource('proxy_black', { group:'dd' });
//拖动完成的事件
proxy_red.afterDragDrop = function(target, e, id) {
var destEl = Ext.get(id);
var srcEl = Ext.get(this.getEl());
if (destEl.dom.id == "target2") {
if (srcEl.dom.id != "proxy_red") {
destEl.dom.style.border = "solid #000 1px";
alert("此区域仅接受red(红色)色块!");
return false;
}
}
var sColor = srcEl.dom.id.split('_')[1]; //得取拖动源id的后面一部分,即proxy_red后面的red
//destEl.dom.style.backgroundColor = sColor; //设置目标id的背景色
//destEl.dom.style.border = "solid #000 1px";
var beginX = destEl.getX(); //目标区块的X轴初始坐标
var beginY = destEl.getY(); //目标区块的Y轴初始坐标
var eXY = e.getXY();
var dragtargetX = eXY[0];
var dragtargetY = eXY[1];
var X = dragtargetX - beginX;
var Y = dragtargetY - beginY;
alert("x:"+X);alert("y:"+Y);
var TextField35378 = new Ext.form.TextField({id:"TextField35378",
labelSeparator:":" ,labelStyle:"text-align:right",
inputType: 'text', name: '姓名',
allowBlank: true,
fieldLabel: '姓名',
hidden: false, hideLabel: false,
width: 120, x: X, y: Y});
Designer.formPanel.add(TextField35378);
Designer.formPanel.doLayout();
//Designer.target.add(TextField35378);
//Designer.target.doLayout();
//alert(destEl.getX());
};
proxy_red.onDragEnter = function(e, id) {
Ext.get(id).dom.style.border = "dashed #00f 2px";
Ext.get(id).dom.style.backgroundColor = "#fff";
}
proxy_red.onDragOut = function(e, id) {
Ext.get(id).dom.style.border = "solid #000 1px";
}
//为其它拖动源赋值同样的事件处理函数
proxy_green.afterDragDrop = proxy_red.afterDragDrop;
proxy_black.afterDragDrop = proxy_red.afterDragDrop;
proxy_green.onDragEnter = proxy_red.onDragEnter;
proxy_black.onDragEnter = proxy_red.onDragEnter;
proxy_green.onDragOut = proxy_red.onDragOut;
proxy_black.onDragOut = proxy_red.onDragOut;
var target = new Ext.dd.DDTarget('target', 'dd');
//建立拖动目标区(这里的dd与上面拖动源的group:dd相同
//只有相同group的DDProxy/DragSource才会接受)
var target2 = new Ext.dd.DDTarget('target2', 'dd');
Designer.uxForm();
});
</script>
<script language="javascript">
Ext.namespace('Designer');
Designer.uxForm = function (){
var formPanel = new Ext.form.FormPanel({
id:'formpanelid',
header:false,
frame:true,
border:false,
layout:"absolute",
width :600,
height :400,
renderTo:"uxform"
});
Designer.formPanel = formPanel;
var formPanelDropTargetEl = formPanel.body.dom;
var formPanelDropTarget = new Ext.dd.DropTarget(formPanelDropTargetEl, {
id:'targetid',
group : 'dd',
notifyEnter : function(ddSource, e, data) {
//Add some flare to invite drop.
//formPanel.body.stopFx();
//formPanel.body.highlight();
},
notifyDrop : function(ddSource, e, data){
// Reference the record (single selection) for readability
//var selectedRecord = ddSource.dragData.selections[0];
// Load the record into the form
//formPanel.getForm().loadRecord(selectedRecord);
// Delete record from the grid. not really required.
//ddSource.grid.store.remove(selectedRecord);
//return(true);
}
});
Designer.target = formPanelDropTarget;
}
</script>
<div>
<div id="proxy_red" class="item" style="background:red">Red</div>
<div id="proxy_green" class="item" style="background:green">Green</div>
<div id="proxy_black" class="item" style="background:black">Black</div>
<div id="proxy" class="item" style="color:Black">我可以<br/>随便拖</div>
</div>
<br/>
<div id="uxform" style="margin-left:200px;margin-top:120px"></div>
<br/>
<!--
<div id="target" class="block">把上面有颜色的色块拖到我这里试试</div>
<div id="target2" class="block">把上面有颜色的色块拖到我这里试试(此区域仅接受红色块)</div>
-->
</body>
</html>
相关文章推荐
- Extjs 拖拽 设计器 (二)
- Delphi实现窗体总是向前操作,Delphi拖拽的一个例子
- HTML5--拖拽API(含超经典例子)
- ExtJS笔记->继承控件例子
- EXTJS FILE UploadDialog用JAVA实现例子
- 关于Extjs3.4创建chart 统计图的例子
- Extjs的下拉框例子
- 转.对DIV进行拖拽、缩放、锁定、删除四合一例子
- ExtJs例子和资料站因为后台资料及例子的完善,暂时线上的不会更新
- QGraphicItem, 拖拽窗口大小例子
- 一个EXTJS与JSP连接把数据写入数据库的例子
- EXTJS与Domino相结合的例子
- EXTJS 5.1 例子查看
- 低权限向高权限发送消息 (例子 拖拽文件)
- ExtJS例子
- Extjs 例子:下拉菜单combobox 窗口window 树tree
- Mouse without Borders是微软的一个软件实验项目,这款软件可让鼠标自由在局域网中的多台电脑间移动,键盘输入实现无缝切换,还可以直接用鼠标相互拖拽文件。 如果经常需要同时使用两台以
- Extjs 树导航的简单例子
- ExtJS的拖拽效果示例
- ExtJS 4 动态加载的演示例子