Ioa*_*rcu 6 asp.net ajaxcontroltoolkit 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的标准行为吗?我怎么能摆脱它?
ScriptManager控制后右下方放置脚本:
<script type="text/javascript">
Sys.Extended.UI.TabContainer.prototype._app_onload = function (sender, e) {
if (this._cachedActiveTabIndex != -1) {
this.set_activeTabIndex(this._cachedActiveTabIndex);
this._cachedActiveTabIndex = -1;
var activeTab = this.get_tabs()[this._activeTabIndex];
if (activeTab) {
activeTab._wasLoaded = true;
//activeTab._setFocus(activeTab); -- disable focus on active tab in the last TabContainer
}
}
this._loaded = true;
}
</script>
Run Code Online (Sandbox Code Playgroud)
您可以在服务器端设置焦点以避免页面跳转。
在 Page_Load 中试试这个:
PageUtility.SetFocus(foo);
Run Code Online (Sandbox Code Playgroud)
另请检查您是否正在设置 Page.MaintainScrollPositionOnPostback。
让我知道这是否有帮助。
更新 - 您可以简单地在默认情况下想要成为焦点的任何控件上调用 .Focus() 。
例如:YourControlToFocus.Focus()
| 归档时间: |
|
| 查看次数: |
3758 次 |
| 最近记录: |