如何以编程方式将行w / label添加到声明性dojox.layout.TableContainer(Dojo 1.6)

时间:2011-06-30 08:36:33

标签: dojo

TableContainer在HTML中声明如下:

<div dojoType="dojox.layout.TableContainer" jsId="myTable" id="myTable" cols="1">
    <!-- stuff -->     
</div>

我尝试以编程方式添加包含TextBox的行:

var tb = new dijit.form.TextBox({
            label: "Name"
        });
myTable.addChild(tb);

TextBox将显示在表格下方,不显示任何标签。如何在表格中放置带标签的新行?

2 个答案:

答案 0 :(得分:2)

我很确定这是一个错误。看起来,一旦TableContainer第一次启动,添加子项不会触发新的layout()等。快速但可怕的解决方法是使TableContainer“忘记”它已经初始化并启动,并且然后手动运行startup()

var tb = new dijit.form.TextBox({
            label: "Name"
        });
myTable.addChild(tb);

myTable._initialized = false;
myTable._started = false;
myTable.startup();

我对这可能导致的任何不可预见的奇怪事情不承担任何责任:-)通常操纵私人成员(以下划线开头的那些)是一个坏主意。

答案 1 :(得分:1)

是的,tablecontainer存在一些问题,建议的解决方法是

<div id='myTable'></div>

在HTML中声明div但是在脚本中将其转换为tableContainer然后你可以使用两种方法来避免bug

在脚本中初始化表容器,如

var myTable=new dojox.layout.TableCOntainer({cols:1},"myTable");

don't forget to startup our table container after adding the childrens

在此之后,您可以轻松添加任意数量的孩子