【问题标题】:Programmatically adding border container with other widgets inside a content pane以编程方式在内容窗格中添加带有其他小部件的边框容器
【发布时间】:2014-08-25 15:28:24
【问题描述】:

我正在尝试以编程方式在中心区域内容窗格内添加一个具有中心区域和右侧区域的边框容器,但中心区域和右侧区域重叠 - 内容窗格似乎不被识别为区域。这是代码:

添加边框容器和内容窗格的javascript模块:

     define(["dojo/dom-construct", "dijit/registry", "dijit/layout/BorderContainer",       "dijit/layout/ContentPane", "dojo/domReady!"],
   function (domConstruct, registry, BorderContainer, ContentPane
     ) {
    return {
        Test: function () {

           ...

            //border container
            var mainContainer = new BorderContainer({
                id: 'mainContainer',
                design: 'headline',
                style: "height: 500px; width: 800px;"
            });
            //center content pane -- > gets overwritten by the right content pane
            var cp1 = new ContentPane({
                id: 'centerContainer',
                region: "center",
                content: "I'm in the center"
            });
            //right content pane
            var cp2 = new ContentPane({
                id: 'rContainer',
                region: "right",
                content: " I'm on the right",
                style: "width: 100px"
            });
            mainContainer.addChild(cp1);
            mainContainer.addChild(cp2);
            mainContainer.placeAt('Content');
            mainContainer.startup();
        }
    }
});

这是添加边框容器和其他内容窗格的中心内容窗格:

 <div data-dojo-type="dijit/layout/BorderContainer" id="Main" style="width: 100%; height: 100%">
 <div data-dojo-type="dojox/layout/ContentPane" id="TOC" data-dojo-props="splitter: true, region:'leading'">
 </div>
 <div data-dojo-type="dojox/layout/ContentPane" id="Content" data-dojo-props="splitter: true, region:'center'">
 </div> 

【问题讨论】:

  • 如果我手动更改窗口大小,布局将正确显示。也许我需要在代码中以某种方式调整窗口大小?

标签: javascript dojo dijit.layout


【解决方案1】:

我刚刚添加了:

  mainContainer.resize();

紧接着:

  mainContainer.startup();

现在可以正确显示

【讨论】:

    【解决方案2】:

    从第一个代码块来看,您的问题似乎是您在将 BorderContainer 附加到文档之前调用了 startup()。

    但是,我不理解您的示例代码(第一个代码 sn-p 和第二个代码之间的关系),您是尝试以声明方式(在标记中)还是以编程方式执行此操作?

    【讨论】:

    • 第一个代码 sn-p 是一个模块,它以编程方式将带有内容窗格的边框容器添加到主 htm 页面的“内容”div 中(第二个代码 sn-p)
    • 哦,我明白了...看起来像一个错误,假设您在上面的程序代码执行之前调用 parse() 。不过,我没有看到你调用 parse()。
    猜你喜欢
    • 2012-06-26
    • 1970-01-01
    • 2017-03-06
    • 1970-01-01
    • 1970-01-01
    • 2020-08-10
    • 1970-01-01
    • 1970-01-01
    • 2019-11-28
    相关资源
    最近更新 更多