DOJO似乎有些怪癖.我特别需要在页面加载时隐藏TabContainer,但在用户单击按钮后变为可见.我尝试的第一件事是设置style.display ="none"来启动,然后在click事件上设置style.display ="block".不幸的是,这只是部分工作 - 页面将在正确的位置/维度中呈现不可见的框,但不呈现实际内容.该框的内容仅在被其他内容触发时才会呈现(例如,转到另一个FF选项卡或暂停/恢复firebug将使框渲染).
如果将style.display属性设置为在页面加载时可见,则一切正常.您可以切换显示属性,它可以正确显示或隐藏tabcontainer.但如果它在页面加载时设置为"无",则会搞砸.
我尝试了一种解决方法,在HTML中将style.display属性设置为"",然后在Javascript中立即将其设置为"none",但它仍然失败 - 更改发生得太快而且需要在tabcontainer呈现之后发生(这可能需要一两秒钟).
一些剥离的示例代码:
HTML:
<div id="tabContainer" dojoType="dijit.layout.TabContainer" style="width:500px;
height:100px;display:none;">
</div>
然后使用Javascript显示用户点击的标签:
function initTabs()
{
var tabContainer = dojo.byId('tabContainer');
tabContainer.style.display = 'block';
}
Run Code Online (Sandbox Code Playgroud)
如何在不显示TabContainer的情况下动态显示/隐藏TabContainer?
我在ASP.NET项目的页面上使用了多个TabContainer,我注意到一个非常奇怪的行为:当页面加载时,焦点跳转到页面上的最后一个TabContainer,导致它向下滚动.我没有明确关注任何控件,所以我不明白它的来源.我也在控件之间切换位置,它总是最后一个聚焦.TabContainers没有任何花哨的设置,这基本上是它们的样子:
<cc1:TabContainer ID="tabContainer" runat="server">
<cc1:TabPanel runat="server" HeaderText="Header1" ID="tabPanel1" TabIndex="0">
<HeaderTemplate>
<asp:Label ID="lblTab1" runat="server" Text="Tab1"></asp:Label>
</HeaderTemplate>
<ContentTemplate>
... (anything goes here, it still doesn't work)
</ContentTemplate>
</cc1:TabPanel>
<cc1:TabPanel runat="server" HeaderText="Header2" ID="tabPanel2" TabIndex="1">
<HeaderTemplate>
<asp:Label ID="lblTab2" EnableViewState="False" runat="server" Text="Tab2"></asp:Label>
</HeaderTemplate>
<ContentTemplate>
... (anything goes here, it still doesn't work)
</ContentTemplate>
</cc1:TabPanel>
</cc1:TabContainer>
Run Code Online (Sandbox Code Playgroud)
我知道我可以将注意力集中在一个控件上,我尝试了但是页面首先滚动到选项卡容器然后返回到聚焦控件(它看起来不太好).我尝试将焦点设置为另一个控件:
<body id="main" onload="javascript:document.getElementById('lnkLogout').focus();">
Run Code Online (Sandbox Code Playgroud)
这是TabContainer的标准行为吗?我怎么能摆脱它?
我有一个ASP.NET页面,它使用ASP.NET Ajax Control Toolkit TabContainer.在这种情况Page_Load下,我隐藏了一些基于给予页面的数据的选项卡.然后,我想根据(可选)查询字符串参数的值使其中一个选项卡处于活动状态.
所以我有:
protected void Page_Load ( object sender, EventArgs e )
{
if ( !this.IsPostBack )
{
// Tabs with no data are hidden in here
LoadDataIntoTabs();
PreselectCorrectTab();
}
}
private void PreselectCorrectTab ()
{
if ( ctlTabContainer.Visible )
{
if ( !string.IsNullOrEmpty( Request.QueryString[ "tabIndex" ] ) )
{
int tabIndex = 0;
if ( int.TryParse( Request.QueryString[ "tabIndex" ], out tabIndex ) )
{
if ( ( ctlTabContainer.Tabs.Count > tabIndex ) && …Run Code Online (Sandbox Code Playgroud) 我使用以下代码将TabContainer添加到页面
<asp:TabContainer ID="TabContainer1" runat="server">
<asp:TabPanel runat="server" HeaderText="tab one" ID="TabPanel0">
<ContentTemplate>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
</ContentTemplate>
</asp:TabPanel>
<asp:TabPanel runat="server" HeaderText="tab two" ID="TabPanel1">
<ContentTemplate>
<asp:Button ID="Button1" runat="server" Text="Button" />
</ContentTemplate>
</asp:TabPanel>
</asp:TabContainer>
Run Code Online (Sandbox Code Playgroud)
但是当页面被渲染时,TabPanel总是被隐藏,我通过Firebug来修改html代码并发现可见性被隐藏......问题是什么? http://i.stack.imgur.com/m1eSW.jpg
我是ExtJs的新手,我无法解决问题.
我有一个网格,它被调整到它的面板容器(布局:适合)但是当我折叠面板时,网格不会调整到新的宽度.如果我没弄错的话,ExtJs可以自动完成.
这是我的代码
Ext.create('Ext.Viewport', {
id: 'myview',
layout: 'border',
items:
[
{
//Top region
region: 'north',
title: "My north Title",
//split: false,
tbar: CreateTButtons() //Create some toolbar buttons
}, {
//South region
region: 'south',
contentEl: 'footer',
split: true,
height: 25,
minSize: 100,
maxSize: 200,
collapsible: false,
collapsed: false,
margins: '0 0 0 0',
align:'right'
}, {
//East region
xtype: 'tabpanel',
id: 'eastTabPanel',
region: 'east',
title: "My east title",
dockedItems: GetEastItems(), //Create East Items
animCollapse: true,
collapsible: true,
split: false,
width: …Run Code Online (Sandbox Code Playgroud) 如何使用dojo选项卡容器测试选项卡是否处于活动状态?(在JQuery中这很简单......你可以使用这样的东西
if($("#accordion").accordion('option', 'active') == mytabNumber){
Run Code Online (Sandbox Code Playgroud)
使用dojo,dijit.layout.TabContainer必须有类似的方法来完成它,而不必编写一个升级函数和所有爵士乐.
或许类似......
if( dojo.byId("tab2"), {selected:true} ){
Run Code Online (Sandbox Code Playgroud)
提前致谢!
tabcontainer ×7
asp.net ×3
dojo ×3
javascript ×2
asp.net-ajax ×1
digit ×1
extjs ×1
grid ×1
html ×1
panel ×1
tabs ×1