none
关于tabpanel的一个问题,请大家指点! RRS feed

  • 问题

  •  function Call_TabPanel1() { <%= ClientScript.GetCallbackEventReference(this, "0", "ReceiveTabPanel1",null)%>;  }     
     function ReceiveTabPanel1(rValue){ }
     function Call_TabPanel2() { <%= ClientScript.GetCallbackEventReference(this, "0", "ReceiveTabPanel2",null)%>;  }     
     function ReceiveTabPanel2(rValue){ }
    .
    .
    .
    .
    <cc1:TabContainer ID="TabContainer1" runat="server"  Width="1000px"   CssClass="AjaxTabStrip" ActiveTabIndex="0" > 默认是第一个tabpanel选中   
         <cc1:TabPanel ID="TabPanel1" HeaderText="部门主管" OnClientClick="Call_TabPanel1"  runat="server" >
     <cc1:TabPanel ID="TabPanel2" HeaderText="工程部" OnClientClick="Call_TabPanel2"  runat="server" >
     <cc1:TabPanel ID="TabPanel3" HeaderText="支持室" OnClientClick="Call_TabPanel3"  runat="server" >
     <cc1:TabPanel ID="TabPanel4" HeaderText="培训室" OnClientClick="Call_TabPanel4"  runat="server" >

    我现在要做的是,在选中其他tabpanel时,下面会有很多人,我会点击人,进入查看状态,然后返回,返回的时候会又回到默认的第一个tabpanel,而不是我选中的比如“工程部”的那个tabpanel,我怎么在返回的时候保持在我选中的那个tabpanel?
    我现在的做法是在OnClientClick中调用回调函数把相应的ActiveTabIndex的值送回到后台,用session保存一下,然后在page_load里面读一下就可,当然也可以再页面加一个隐藏的文本框保存一下,不知道还有没有别的简单的方法?
    其实我想问的关键是,我怎么能用一个函数来处理所有的tabpanel的点击事件,而不是上面每一个tabpanel都有一个事件
    我在点击某一个tabpanel的时候,我怎么能在javascript里面取得id,或者别的来区分是点击的那一个tabpanel?
    2009年8月13日 0:50

答案

全部回复

  • 你好 你可以使用 ActiveTabChanged事件
    在这个事件的处理函数中 设置TabContainer的ActivePage的当前选中的TabPage


    Wenn ich dich hab’,gibt es nichts, was unerträglich ist.坚持不懈!http://hi.baidu.com/1987raymond
    2009年8月13日 1:48
    版主
  • 呵呵,能说的再详细一点吗?没理解!
    2009年8月13日 9:47
  • <cc1:TabContainer ID="TabContainer1" runat="server"  Width="1000px"      OnActiveTabChanged="Click_OnActiveTabChanged"     CssClass="AjaxTabStrip" ActiveTabIndex="0" > 为什么没有autopostback属性?我输入提示没有该属性?所以OnActiveTabChanged这个函数不运行!见笑,希望指点!
    2009年8月13日 9:53
  • 你好,
    有这个属性啊。你看看下面的例子,的确有这个属性的。

    <%@ Page Language="C#" %>
    
    <%@ Register assembly="AjaxControlToolkit" namespace="AjaxControlToolkit" tagprefix="cc1" %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <script runat="server">
        protected void Button1_Click(object sender,EventArgs e)
        {
           
        }
    
        protected void TabContainer1_ActiveTabChanged(object sender, EventArgs e)
        {
            Response.Write(this.TabContainer1.ActiveTab.HeaderText);
        }
    </script>
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
    </head>
    <body>
        <form id="form1" runat="server">
        <asp:ScriptManager ID="ScriptManager1" runat="server">
            </asp:ScriptManager>
        <div>
        
        
        </div>
        
            <cc1:TabContainer ID="TabContainer1" runat="server" ActiveTabIndex="2" 
            AutoPostBack="True" onactivetabchanged="TabContainer1_ActiveTabChanged">
                <cc1:TabPanel runat="server" HeaderText="TabPanel1" ID="TabPanel1">
                </cc1:TabPanel>
                <cc1:TabPanel ID="TabPanel2" runat="server" HeaderText="TabPanel2">
                </cc1:TabPanel>
                <cc1:TabPanel ID="TabPanel3" runat="server" HeaderText="TabPanel3">
                </cc1:TabPanel>
                <cc1:TabPanel ID="TabPanel4" runat="server" HeaderText="TabPanel4">
                    <ContentTemplate>
                    <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
                    <asp:Button ID="Button1" runat="server" Text="Button"  OnClick="Button1_Click"/>
                    </ContentTemplate>
                    
                </cc1:TabPanel>
            </cc1:TabContainer>
            
        
        </form>
    </body>
    </html>
    

    Microsoft Online Community Support
    2009年8月14日 2:36
  • 真是奇怪了, AutoPostBack,如果有的话,我输入会自动提示,但实际没有自动提示,并且 完全输入后,有下划线,提示不是元素TabContainer 的有效属性,真是纳闷了!
    2009年8月14日 6:33
  • 你用的VS2005开发吧。那个AjaxToolkit的版本可能没有 VS08中的3.5版本可能就有了你可以看看。
    2009年8月17日 3:32
  • 楼上哥们,没错,我是用的vs2005开发的,请问在2005下面有神秘解决方法?
    2009年8月17日 7:57
  • 很遗憾 版本不同 vs2005的是1.0版本 vs2008是2.0或者3.5版本的 
    1.0可能没增加那个属性 
    2009年8月17日 8:00
  • 如果的确如你所说,你首先确保你安装了Framework3.5,然后下载3.5版本的AjaxTookit。
    http://ajaxcontroltoolkit.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=27326


    Microsoft Online Community Support
    2009年8月17日 8:01
  • .net clr 2.0.50727 我装的这个版本,我要升级吗?那对我项目里以前用到的ajax会产生影响吗?
    2009年8月17日 8:10
  • 如果你以前不是使用的不是基于.Net Framework3.5的toolkit,那你得配置你的webconfig为使用基于3.5的tookit。这样就相当于将你的程序从基于2.0的框架升级到基于3.5的框架。
    Microsoft Online Community Support
    2009年8月17日 8:16
  • 我想知道升级后对我老的程序有什么影响?
    2009年8月17日 10:40
  • 升级后谁也不好说什么影响  你可以备份一次 去试试看呗
    2009年8月18日 0:32
  • 你好,
    升级后你的老程序理论上是完全能正常运行的。我也将基于Framework2.0的项目升级到3.5过,运行完全正常。你可以将你的项目先备份,然后升级试试。


    Microsoft Online Community Support
    2009年8月18日 1:59