繁体   English   中英

Ajax Tab控件中的Tab更改事件

[英]Tab change event in Ajax Tab control

我在我的一个页面中使用过Ajax Tab Control。 它有一个主用户控件,里面有三个选项卡。 这三个选项卡已由三个单独的用户控件填充。 这些用户控件有一些控件和一个保存按钮来保存数据。 我的问题是,如果用户在当前标签用户控件中有任何未保存的更改,我必须阻止用户从标签导航。 我必须在弹出窗口中询问他有未保存的更改,是否要保存它们。 并且根据用户的反应必须跟进进一步的行动。 我可以打开弹出窗口并使用TabControl的OnClientActiveTabChanged事件询问未保存的更改。 我在确切知道哪个标签的数据未保存时遇到问题。 我无法追踪用户试图离开的当前选项卡。任何人都可以帮助我一直保持当前选项卡的名称,这样每当用户点击任何其他选项卡时,我就会知道哪个选项卡的数据我必须保存并可以从我的主用户控件中激活相应用户控件的保存功能。

请查找以下代码示例:

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="MasterUserControl.ascx.cs"
    Inherits="TabbedSolution.MasterUserControl" %>
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="asp" %>
<%@ Register Src="UserControl1.ascx" TagName="UserControl1" TagPrefix="uc1" %>
<%@ Register Src="UserControl2.ascx" TagName="UserControl2" TagPrefix="uc2" %>
<%@ Register Src="UserControl3.ascx" TagName="UserControl3" TagPrefix="uc3" %>
<div>
    <asp:TabContainer ID="TabContainer1" runat="server" 
    AutoPostBack="true" OnClientActiveTabChanged="chechUnsavedChanges" OnActiveTabChanged="tabChanged">
        <asp:TabPanel ID="TabPanel1" runat="server" HeaderText="Panel1" >
            <ContentTemplate>
                <uc1:UserControl1 ID="UserControl11" runat="server" />
            </ContentTemplate>
        </asp:TabPanel>
        <asp:TabPanel ID="TabPanel2" runat="server" HeaderText="Panel2">
            <ContentTemplate>
                <uc2:UserControl2 ID="UserControl21" runat="server" />
            </ContentTemplate>
        </asp:TabPanel>
        <asp:TabPanel ID="TabPanel3" runat="server" HeaderText="Panel3">
            <ContentTemplate>
                <uc3:UserControl3 ID="UserControl31" runat="server" />
            </ContentTemplate>
        </asp:TabPanel>
    </asp:TabContainer>
</div>

在我看来,如果您可以获得当前活动的选项卡索引并将其存储在会话中,那应该可行。 这就是我为多视图activeviewindex等所做的onclick事件的asp.net控件。 我在页面加载完成事件中获取值以保存用户当前查看刷新等。

我发现使用带有更新面板的多视图和一个小图形显示使它看起来像一个标签,你可以制作一个可以点击链接按钮的标签控件,这样你就可以这样设置会话.... set onclick并在负载完成时检索。

EX: Session("whichTab") = myTabControl.activetabindex on click和whatever = Session("whichTab")在加载完成时为whatever = Session("whichTab")页面。

注意:我在VB.net代码中执行所有这些操作

这将告诉您何时用户更改了他或她之前所处的标签。 当然,您必须找到为您的应用程序执行此操作的最佳方法,并查看选项卡控件选项卡似乎没有服务器端单击事件,我会执行多视图。 如果有人可以通过点击事件纠正我,请执行。 虽然我刚刚开始使用它,但我还没有看到控件的规格,我是如何到达这里的。

希望这可以帮助。

在tabchanged javascript函数中尝试这个

var container = $find('TabContainer1');
var activeTab = container.get_activeTabIndex(); 

我不知道没有jquery的方式,但为什么使用javascript没有jquery呵呵:)

ps:我没有测试过这个解决方案,但它应该可行

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM