异常: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访问以及网站总的页面访问次数,都可以利用。
完了,看看,应该会有些效果....嘿嘿