各位好,向大家请教个问题,是这样的,我在Ajax TabContainer中动态添加TabPanel,当我动态添加第一个TabPanel时添加成功,但当我动态添加第二个TabPanel时,老是出现"指定的参数已超出有效值的范围.参数名: index"这样的一个错误提示,知道原因的请帮帮忙,谢谢了.

解决方案 »

  1.   

    http://www.cnblogs.com/htht66/archive/2008/03/14/1104765.html
      

  2.   

     jinjazz谢谢你,不过我要的是在后台动态添加TabPanel出现的问题
      

  3.   

    http://hi.baidu.com/haoyongsheng/blog/item/aecdd682ebdbddb96c8119f8.html
      

  4.   

    在页面上放了一个TabContainer1和两个Button,默认情况下,在TabContainer1已经有一个TabPanel,然后再当我点击按钮时再另外加TabPanel
    代码如下:
    protected void Button1_Click(object sender, EventArgs e)
            {
                    AjaxControlToolkit.TabPanel ta = new AjaxControlToolkit.TabPanel();
                    ta.HeaderText = "你好";
                    ta.ID = "1";
                    ta.TabIndex = 1;
                    xwk tt = (xwk)this.LoadControl("xwk.ascx");
                    ta.Controls.Add(tt);
                    TabContainer1.Controls.Add(ta);        } 
    protected void Button2_Click(object sender, EventArgs e)
            {
                AjaxControlToolkit.TabPanel ta1 = new AjaxControlToolkit.TabPanel();
                ta1.HeaderText = "你好";
                ta1.ID = "2";
                ta1.TabIndex = 2;
                xwk tt1 = (xwk)this.LoadControl("xwk.ascx");
                ta1.Controls.Add(tt1);
                TabContainer1.Controls.Add(ta1);
                AjaxControlToolkit.TabContainer tab = TabContainer1;
               
            }
      

  5.   

    jinjazz真的谢谢你,不过你给的我之前在网上也搜索过了,也不适合我的要求,麻烦帮忙看看我给的代码,看看是什么原因,我找了很久都搞不懂是什么原因,麻烦大家帮忙看看,谢谢了
      

  6.   

    添加tabpanel只能在你init事件里写明!page_Load和page_Init的区别 
    Page_Init事件:当页面初始化时运行,例如可以在加载控件之前检测客户端环境变量,它与Load工作方式差不多,但在Load之前运行,当网页重新加载时不会再触发这个事件。(意思就是只有第一次加载页面的时候才会加载页面)protected void Page_Init(object sender, EventArgs e)
     {
     }这个方法先于page_load之前执行,也在控件初始化前执行 Page_Load事件:当页面被读入内存,进行处理时引发该事件,使用该事件要切记,在使用Page_Init事件之后,每次刷新页面,.Net都会为它绘制一个全新的页面,并将它按新页面来处理,所以每次重新加载都要触发这个事件。(意思是在以下代码每次刷新又会重新执行)using System.Configuration;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;public partial class _Default : System.Web.UI.Page
    {    protected void Page_Init(object sender, EventArgs e)
        {
            DropDownList1.Items.Add("a");
            DropDownList1.Items.Add("b");
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack) -->获取一个值,该值指示该页面是否正为响应客户端回发而加载,或者是否正被首次加载和访问。
            {
                DropDownList1.Items.Add("aaaa");
                DropDownList1.Items.Add("bbbb");
            }
        }    protected void Button1_Click(object sender, EventArgs e)
        {
            DropDownList1.Items.Add(TextBox1.Text);
        } }
      

  7.   

    这样的话就是不可以实现我上面想要的动态添加TabPanel了吗?
      

  8.   

    如果是 ActiveTabIndex 出问题,那么这是一个已知的问题! 由于动态添加TabPanel时存在 ViewState 中的 TabContainer.ActiveTabIndex 没有正确恢复导致
    你需要手动记录 TabContainer.Tabs.Count 并在 Page_Init 中加以处理防止 ActiveTabIndex 越界
      

  9.   

                TabPanel tab = new TabPanel();
                tab.HeaderText = "手工添加";
                tab.TabIndex = 0;
                
                TabContainer1.Tabs.Add(tab);            TabContainer1.ActiveTab = tab;
    好像正确设置tab.TabIndex 就可以动态添加上去了.
      

  10.   

    我也在等这个问题  查了好久百度 GOOGLE了 无解  郁闷
      

  11.   

    以前错误消息:
    行: 4723
    错误: Sys.WebForms.PageRequestManagerServerErrorException: 指定的参数已超出有效值的范围。
    参数名: index最新错误信息:
    行: 4723
    错误: Sys.WebForms.PageRequestManagerServerErrorException: 指定的参数已超出有效值的范围。
    参数名: value