ajax tabcontainer的问题

时间:2011-08-02 18:07:09

标签: c# asp.net ajaxcontroltoolkit

我从ajax tabcontainer使用。我想当隐藏字段的值不是1时(当我在gridview中点击时,隐藏字段的值会发生变化,我不会t have problem with set value for hiddenfield) and user click in email tab it alerts and stays in first tab.but in my code it alert and changes tab.i want to stay in cuurent tab. i write this code but it dosen工作。 请帮帮我。

 <%@ Page Language="C#" %>


     <%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="asp" %>                
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org   


<script type="text/javascript">
   function SetActiveTab() {
   var hfd = $get('<%=HiddenField1.ClientID%>');
   if (hfd.value != "1") {
       alert("hitttttttt");
       var ctrl = $find('TabContainer1');
       ctrl.set_activeTab(ctrl.get_tabs()[0]);


   }

}
</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<title>Ajax Control - Tabs </title>
 </head>
<body>
<form id="form1" runat="server">
         <b>Tabs Demonstration</b> <br />
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
         <asp:HiddenField ID="HiddenField1" runat="server" />
    <br />
    <asp:TabContainer runat="server" ID="TabContainer1" Height="138px"  ActiveTabIndex="0"
        Width="402px">
        <asp:TabPanel runat="server" ID="Panel1" HeaderText="Address" >
            <ContentTemplate>
                <asp:UpdatePanel ID="updatePanel1" runat="server">
                    <ContentTemplate>
                        <table>
                            <tr><td>First Name:</td><td><asp:TextBox ID="txtName" runat="server" /></td></tr>
                            <tr><td>Address:</td><td><asp:TextBox ID="txtAddress" runat="server" /></td></tr>
                        </table>
                   </ContentTemplate>
                </asp:UpdatePanel>
            </ContentTemplate>
        </asp:TabPanel>

        <asp:TabPanel runat="server" ID="Panel3" HeaderText="Email" OnClientClick="SetActiveTab" >
            <ContentTemplate>
                Email: <asp:TextBox ID="txtEmail" runat="server" />

            </ContentTemplate>
        </asp:TabPanel>

        <asp:TabPanel runat="server" ID="Panel2"  HeaderText="Login Details" >
            <ContentTemplate>
             <table>
           <tr> <td>User Name:</td><td><asp:TextBox ID="txtUser" runat="server" /></td></tr>
           <tr> <td>Password:</td><td><asp:TextBox ID="txtPass" runat="server" /></td></tr>
            </ContentTemplate>
        </asp:TabPanel>

    </asp:TabContainer>


</form>

1 个答案:

答案 0 :(得分:0)

我发现的一个解决方案是删除OnClientClick处理程序并使用下面的javascript:

 function pageLoad() {
    var tabContainer = $find('<%= TabContainer1.ClientID %>');
    var hfd = $get('<%= HiddenField1.ClientID %>');

    var oldSetActiveTab = Function.createDelegate(tabContainer, tabContainer.set_activeTab);

    tabContainer.set_activeTab = function (value) {
        if (value.get_id() == '<%= Panel3.ClientID %>' && hfd.value != "-1") {
            alert("oops");
        }
        else {
            oldSetActiveTab(value);
        }
    };
}