一个关于DropDownList的问题,SelectedIndexChanged事件向应有问题!

Oldman 2002-09-16 08:12:27
我的DropDownList控件的AutoPostBack属性已经设置成了True
我在他的DropDownList的SelectedIndexChanged事件中写了这样一段代码:
session("profile") = dropdownlist1.SelectedItem.Value

PAGE的page_load事件中写了这样一句代码:

if session("profile") <> "" then
'do something1
else
'do something2
end if

但是每次我在改变了dropdownlist的items时,屏幕会refresh一次,但最后又回到了第一次进入的画面,而我的session("profile")最后的结果总是第一次进入时的Value,也就是说,dropdownlist的selectedindex没有改变,请问各位高手,这到底是怎么回事?
我在这里先谢谢各位了!
...全文
77 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Oldman 2002-09-16
  • 打赏
  • 举报
回复
thans a lot
Oldman 2002-09-16
  • 打赏
  • 举报
回复
question solve
chnking 2002-09-16
  • 打赏
  • 举报
回复
前两位说的没错,Page_Load是在任何事件处理之前执行的,而你的要求是要先执行事件处理方法,然后再执行
if session("profile") <> "" then
'do something1
else
'do something2
end if

我告诉你一个方式,一个aspx页面的生存周期中在不同的时期有一系列的事件产生,先是init事件--按照C#文件中的对象,初始化这些对象,然后是LoadViewState事件,.net是靠ViewState来保存页面状态的,在这个事件中来恢复页面的状态。之后是LoadPostData事件,用来处理页面postback回来的数据,将页面中表单数据的填充到各个控件。接着就是page_load事件了,这里你可以做自己要做的事。之后就是开始处理各种控件事件的时候,比如点击按钮,option选择项的改变等等的了。对照你的程序就知道,你要求的事件执行顺序是颠倒的。最后,Render事件产生,这个事件是在要把页面呈现到客户端是产生,也是程序有机会改变所呈现内容的最后时机,你可以把你原来放在page_load中处理的那段程序放在这个事件里,就会在响应了option改变事件之后再设置session了。
GHOSTofCPP 2002-09-16
  • 打赏
  • 举报
回复
你在SelectedIndexChange事件提交时,首先执行的是Page_Load(),然后才是你定义的事件处理函数,有可能你在page_load()时将该dropdownlist又重置过了,你debug一下,应该是这个问题。
saucer 2002-09-16
  • 打赏
  • 举报
回复
page_load runs before any event handler like SelectedIndexChange

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧