TabPanel非首显页不能完全渲染的问题解决

   最近在用Coolite 0.8.2做系统,在用到TabPanel的时候发现,只要不是页面加载即显示的标签页并且使用了ColumnLayout或者FormLayout布局的话,在切换到这些标签页的时候,这些布局内的Text控件和ComboBox控件的显示都不全,网上查找说设置LayoutOnTabChange为 true可以解决该问题,但是很不幸,该方法无效,后来经过摸索试验,发现只要在标签切换时针对这些布局的上层容器控件(一般是一个普通Panel或者 FormPanel)执行doLayout即可解决这个问题.

 先增加如下js函数:

    <script type="text/javascript">
        function reLayout() {
            setTimeout(function() { FormPanel1.doLayout(false, true); }, 0);
        }
    </script>

 我在这里简单封装了一下,这样如果有很多页,可以都在这里完成重新布局操作.这里 FormPanel1就是FormLayout布局的上层容器,然后在标签切换激活事件Activate中编写代码调用reLayout函数即可:

<ext:Tab ID="Tab4" runat="server" Title="Tab 2">
    <Listeners>
        <Activate Handler="reLayout();" />
    </Listeners>

    <Body>

            ......

    </Body>


当然上面Handler里的代码也可以直接写 FormPanel1.doLayout(false, true);

 具体请参看示例工程, 下载示例工程代码解压,在VS2008中打开直接运行即可.


 

你可能感兴趣的:(TabPanel非首显页不能完全渲染的问题解决)