Extjs 拖拽实验例子

<!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>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ExtJS 是一个流行的 JavaScript 库,用于构建富交互式的 web 应用程序。它提供了丰富的组件和工具,可以帮助开发者快速构建功能强大、美观的用户界面。 以下是一个简单的 ExtJS 中文示例: ```html <!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8"> <title>ExtJS 中文示例</title> <link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/extjs-ext-all@7.3.1/classic/theme-triton/resources/theme-triton-all.css"> <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/extjs-ext-all@7.3.1/build/ext-all.js"></script> </head> <body> <script type="text/javascript"> Ext.onReady(function() { // 创建一个简单的窗口 var window = Ext.create('Ext.window.Window', { title: '欢迎使用 ExtJS', width: 400, height: 300, layout: 'fit', items: [{ xtype: 'panel', html: '<h1>你好,世界!</h1>' }] }); window.show(); }); </script> </body> </html> ``` 在这个例子中,我们首先引入了 ExtJS 的样式和 JavaScript 文件。然后,使用 `Ext.onReady` 方法在页面加载完成后执行代码。 在代码中,我们创建了一个简单的窗口并设置了标题、宽度和高度等属性。窗口中包含一个面板,面板中显示了一个带有标题的简单文本。 当页面加载完成后,我们调用 `window.show()` 方法将窗口显示在页面上。 这个示例演示了如何使用 ExtJS 创建一个简单的中文窗口,并在其中显示一些文本内容。通过使用 ExtJS 的丰富组件和工具,我们可以轻松地构建出功能强大、美观的 web 应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值