2013-04-16 71 views
1

我想通过拖放动态地将新的字段放入容器(layout:hbox)到FormPanel中。动态地向现有的表单面板添加新的字段

在“表单”面板中放置时,我可以动态添加字段。 但我想添加他们放下的位置。

var dynamicField = Ext.create('Ext.container.Container',{ 
          layout : 'hbox', 

          items: [{ 
                   xtype:'textfield', 
                   fieldLable:'Test' 

                  }, { 
            xtype : 'image', 
            src : 'images/cancel.png', 
            hidden : true 

            }] 
             }); 


          formPanel.add(dynamicField); 

           // tried dynamicField.showAt(e.getXY()); 

与dynamicField.showAt(e.getXY())没有运气// e是事件对象

可有人建议我我如何能实现?

问候 URL

+0

一个思路来解决,这是一样,你需要将多个占位符(投掷的容器)的形式面板里面,这样你就可以更换新放置控件的容器。 – Rency

+0

我怎样才能得到它的控制和位置? @Rency – url

回答

0

有这个由煎茶,http://docs.sencha.com/extjs/4.1.3/#!/example/dd/dragdropzones.html提供的样品的例子。在这里我们正在创建一个自定义的可拖放区域,我们可以添加任何东西。检查此示例的代码。

onNodeDrop : function(target, dd, e, data){ 
     var rowBody = Ext.fly(target).findParent('.x-grid-rowbody-tr', null, false), 
      mainRow = rowBody.previousSibling, 
      h = gridView.getRecord(mainRow), 
      targetEl = Ext.get(target); 

     targetEl.insert(<your control>); // here we can add control directly into it. 
     return true; 
    } 

对于理解拖&下降,有一个很好的指南:http://docs.sencha.com/extjs/4.1.3/#!/guide/drag_and_drop