ArgumentOutOfRangeException: 指定的参数已超出有效值的范围。参数名: index (Ajax TabContainer动态添加TabPanel 出的问题)

异常:ArgumentOutOfRangeException: 指定的参数已超出有效值的范围。参数名: index 

指定的参数已超出有效值的范围。
参数名: index

说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.ArgumentOutOfRangeException: 指定的参数已超出有效值的范围。
参数名: index

源错误:

执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。


堆栈跟踪:

 

[ArgumentOutOfRangeException: 指定的参数已超出有效值的范围。

参数名: index]

   System.Web.UI.ControlCollection.get_Item(Int32 index) +75

   AjaxControlToolkit.TabPanelCollection.get_Item(Int32 index) +44

   AjaxControlToolkit.TabContainer.LoadClientState(String clientState) +252

   AjaxControlToolkit.ScriptControlBase.LoadPostData(String postDataKey, NameValueCollection postCollection) +94

   AjaxControlToolkit.TabContainer.LoadPostData(String postDataKey, NameValueCollection postCollection) +60

   AjaxControlToolkit.ScriptControlBase.System.Web.UI.IPostBackDataHandler.LoadPostData(String postDataKey, NameValueCollection postCollection) +36

   System.Web.UI.Page.ProcessPostData(NameValueCollection postData, Boolean fBeforeLoad) +896

   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +2533

错误:指定的参数已超出有效值的范围。参数名: value

Ajax TabContainer动态添加TabPanel 指定的参数已超出有效值的范围

Ajax Asp.Net中有一个新控件叫TabContainer,在这个控件里面是可以放很多个TabPanel的,但是不知道为什么这个 TabPanel的动态添加有些问题,添加是没问题的,但是当尝试着向新添加的tabPanel中动态添加其他控件比如ImageButton时,是会有异常的:[ArgumentOutOfRangeException: 指定的参数已超出有效值的范围。参数名: value 莫名其妙,页面上任何一个控件进行postback都提示此异常。

最后发现:

代码位置放错了,我放在了Page_load中。放在   protected void Page_Init(object sender, EventArgs e)中,就可以.

研究了一下几个事件的发生时间及作用:

页 事 件

典 型 用 场

Page_PreInit

使用IsPostBack属性确定是否是第一次处理该页;创建动态控件;动态设置Theme属性;读取或设置配置文件属性值等

Page_Init

读取或初始化控件属性

Page_Preload

事件在所有回发数据处理之后但在 Load 事件之前引发

Page_Load

读取和更新控件属性

Control events

处理特定事件,如 Button 控件的 Click 事件

Page_PreRender

对页的内容进行最后更改

Page_Unload

执行最后的清理工作,例如关闭打开的文件和数据库连接等

 

page_load page_init 的区别与典型应用:

区别:

"Page_Init:是在页面未加载之前,也就是在页面初始化之前,在Page_Load之前调用的,可以在控件加载之前做一些客户端检测呀这些操作等。但这个事件对于当前用户来说,只会进行一次,也就是第一次访问这个页面的时候,其运行一次。
Page_Load:
Page_Init之后运行(废话),用于加载控制以及页面的其它内容。客户端每刷新或是提交一次,Page_Load事件就重新绘制页面,将当前页面当新页面来处理。"
应用:

比如说,Page_Init里运行计数的代码,这样这个页面被同一个用户不停的刷或是操作的时候,其点击始终是1次,这样计数就比较科学一些。当然,不能防止去了别的页面再回来的情况了。
还有比如做网站的访问统计,记录IP访问以及网站总的页面访问次数,都可以利用。

完了,看看,应该会有些效果....嘿嘿


 



  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值