我现在点击grid某一行,获得grid中总数和单数,计算出的个数取整,显示在另一个form中的三种文本框,
比如计算出 3,循环3行 这组文本框,现在是我点击第二行grid的时候,希望删除之前生成的文本框。
但是获取不了form1.items的长度,所以没有条件来判断删除, var items = formSim.getForm().items;
 var item = "";
 alert("length:" + items.length);//这个长度没有获取到生成的3行9个文本框
 if (item = items.last()) {  
   formSim.remove(item);  //这样删除,下面的生成文本框也全都不显示了。
 }怎么获得这种动态控件生成的信息,作为条件判断 删除。

解决方案 »

  1.   

    获取子元素个数是formSim.getForm().items.items.length
      

  2.   

    没太懂lz的意思
    你要获取form1.items的长度干嘛呢?
      

  3.   

    因为动态生成的控件我获取不到信息,这样怎么判断from1是否已经有控件,然后删除之前的,把最新计算的展示出来。
      

  4.   

    formSim.remove(item);  //这样删除,下面的生成文本框也全都不显示了。
    你既然可以直接删除动态的控件,那你为什么还要判断from1是否已经有控件呢?
    直接删除了,再展示你最新计算的不就得了?
      

  5.   

    那要看你怎样给formSim里面添加文本框的了。
      

  6.   


      for (var i = 0; i < numInt; i++) {                                        var comboxPallet = {
                                                xtype: 'combo',
                                                fieldLabel: '托盘编号',
                                                store: PalletStore,
                                                name: 'PalletId' + i,
                                                hiddenName: 'PalletId' + i,
                                                valueField: 'Id',
                                                displayField: 'PalletNo',
                                                typeAhead: true,
                                                mode: 'remote',
                                                triggerAction: 'all',
                                                emptyText: '---请勿重复选择---',
                                                selectOnFocus: true
                                            }                                        var comboxMaterialShelf = {
                                                xtype: 'combo',
                                                fieldLabel: '货架编号',
                                                store: ShelfStore,
                                                name: 'ShelfId' + i,
                                                hiddenName: 'ShelfId' + i,
                                                valueField: 'Id',
                                                displayField: 'ShelfCode',
                                                typeAhead: true,
                                                mode: 'remote',
                                                triggerAction: 'all',
                                                emptyText: '---请勿重复选择---',
                                                selectOnFocus: true
                                            }                                        var firt = {
                                                xtype: 'textfield',
                                                fieldLabel: '整托盘',
                                                id: 'Text' + i,
                                                name: 'fir',
                                                allowBlank: false,
                                                value: '1托'
                                            }                                        formSim.add(firt);
                                            formSim.add(comboxPallet);
                                            formSim.add(comboxMaterialShelf);
                                            formSim.doLayout();
                                        }
      

  7.   

    不对的,formSim.remove(item);只是删除了fromSim中固定的文本框,我之前有给它三个影藏文本框。
    不会删除刚才生成的文本框。T T
      

  8.   

    直接给formpanel删了, 点击的时候重新生成
      

  9.   

    那你加了什么 删什么啊!
    formSim.remove(firt);
    formSim.remove(comboxPallet);
    formSim.remove(comboxMaterialShelf);
      

  10.   

    点击的时候获取不到 firt\comboxPallet\comboxMaterialShelf\的。我标题不就是这么说了。
      

  11.   

    试试这两种方法:
    1.add以后执行一下 doLayout() 
    2.不用add用 addAt( field, position ) 指定位置。
    你试试,我没试过,祝你好运
      

  12.   

    每次添加之前 formSim.removeAll();
      

  13.   

    每次添加的操作:
    首先removeAll();
    其次添加新的元素
    最后重绘formpanel
      

  14.   

    考虑下这样可不可行:
    form2里嵌套form1 form1里负责根据count添加组件
    每次点击grid的时候 form1先从form2中移除---> 构造新的form1--->再根据新获得的count 将组件加入form1---> 将form1 加入到form2中---> 最后重绘
      

  15.   

    我后来判断Id是否存在,存在即删除。Ext.getCmp("Pallt0")!=undifind ,就循环remove(Ext.getCmp("Pallt"+i));