TabContainer中动态添加TabPanel问题? 各位好,向大家请教个问题,是这样的,我在Ajax TabContainer中动态添加TabPanel,当我动态添加第一个TabPanel时添加成功,但当我动态添加第二个TabPanel时,老是出现"指定的参数已超出有效值的范围.参数名: index"这样的一个错误提示,知道原因的请帮帮忙,谢谢了. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 http://www.cnblogs.com/htht66/archive/2008/03/14/1104765.html jinjazz谢谢你,不过我要的是在后台动态添加TabPanel出现的问题 http://hi.baidu.com/haoyongsheng/blog/item/aecdd682ebdbddb96c8119f8.html 在页面上放了一个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; } jinjazz真的谢谢你,不过你给的我之前在网上也搜索过了,也不适合我的要求,麻烦帮忙看看我给的代码,看看是什么原因,我找了很久都搞不懂是什么原因,麻烦大家帮忙看看,谢谢了 添加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); } } 这样的话就是不可以实现我上面想要的动态添加TabPanel了吗? 如果是 ActiveTabIndex 出问题,那么这是一个已知的问题! 由于动态添加TabPanel时存在 ViewState 中的 TabContainer.ActiveTabIndex 没有正确恢复导致你需要手动记录 TabContainer.Tabs.Count 并在 Page_Init 中加以处理防止 ActiveTabIndex 越界 TabPanel tab = new TabPanel(); tab.HeaderText = "手工添加"; tab.TabIndex = 0; TabContainer1.Tabs.Add(tab); TabContainer1.ActiveTab = tab;好像正确设置tab.TabIndex 就可以动态添加上去了. 我也在等这个问题 查了好久百度 GOOGLE了 无解 郁闷 以前错误消息:行: 4723错误: Sys.WebForms.PageRequestManagerServerErrorException: 指定的参数已超出有效值的范围。参数名: index最新错误信息:行: 4723错误: Sys.WebForms.PageRequestManagerServerErrorException: 指定的参数已超出有效值的范围。参数名: value Asp.net发生的500可以记录吗? 关于SQL Server Mobile Edition label的内容能修改吗? 为什么页面重新加载后,dataset或datatable会为空? ajax问题 gridview 的分页问题 论坛的数据应当如何设计,高分求数据库设计 帮忙看看! 请教高手!!! 微软网站地址的后缀为mspx,那是什么? ADO.NET entity framework 关联数据添加问题 异常详细信息: System.Exception: 将截断字符串或二进制数据。 throw new Exception(E.Message);
代码如下:
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;
}
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);
} }
你需要手动记录 TabContainer.Tabs.Count 并在 Page_Init 中加以处理防止 ActiveTabIndex 越界
tab.HeaderText = "手工添加";
tab.TabIndex = 0;
TabContainer1.Tabs.Add(tab); TabContainer1.ActiveTab = tab;
好像正确设置tab.TabIndex 就可以动态添加上去了.
行: 4723
错误: Sys.WebForms.PageRequestManagerServerErrorException: 指定的参数已超出有效值的范围。
参数名: index最新错误信息:
行: 4723
错误: Sys.WebForms.PageRequestManagerServerErrorException: 指定的参数已超出有效值的范围。
参数名: value