在书上看到一个例子。代码如下
sub page_load(ob as object,ev as eventargs)
if page.ispostback=false then
dim myarray(2) as string
myarray(0)="red"
myarray(1)="blue"
myarray(2)="yellow"
color_list.datasource=myarray
end if
databind()
end sub
<html>
<body>
<form runat="server">
<asp:listbox id="color_list" autopostback=true runat="server"/>
<asp:label text=<%#color_list.selecteditem.text%> runat="server"/>
</form>
</body>
</html>书上介绍如果在page_load中去掉page.ispostback的判断时,在page.ispostback=true时再次执行page_load事件中的代码,相当于将数组又再次初始化,此时释放状态信息,当数据绑定时,标签的text属性的值color_list.selecteditem.text已经是一个空对象。会报错。
可是我想不明白。page.ispostback=false时,当执行page_load事件中的databind后,执行text=<#color_list.selecteditem.text%>时不一样也是空的对象吗???????因为此时并没能 对listbox的选项进行选择啊。邦我解答一下吧。谢谢

解决方案 »

  1.   

    第一次加载时候ispostback = true
    提交过后再加载就是false了
    如果不加这句的话,不管你选择什么,TextBox都不会有值
      

  2.   

    你看看程序的执行情况就应该明白了 sub page_load(ob as object,ev as eventargs) 
    if page.ispostback=false then '此处判断是否为第一次请求页,如果是下面的将执行,否则不执行
    dim myarray(2) as string '定义数组
    myarray(0)="red" '以下对数组初始化
    myarray(1)="blue" 
    myarray(2)="yellow" 
    color_list.datasource=myarray '将color_list的数据源设为myarray数组
    end if '如果是第一次请求页则以上的代码将被执行,否则直接执行下面的代码
    databind() '将color_list与数据源myarray进行绑定,自己想想,如果是第二次访问会怎么样?
    end sub 
    <html> 
    <body> 
    <form runat="server"> 
    <asp:listbox id="color_list" autopostback=true runat="server"/> 
    <asp:label text= <%#color_list.selecteditem.text%> runat="server"/> 
    </form> 
    </body> 
    </html>
      

  3.   

    能解答一下吗。让我自己想我想不通啊。第一次请求页面,执行数据绑定表达式<%#color_list.selecteditem.text%>此时不为空吗。还没有对color_list的项目做任何选择啊
      

  4.   

    页面一加载就相当于ispostback = true了一次,
    在你提交时页面一回调,你所写的内容就又会没有的
    所以在ispostback = false即页面不回调时就显示出来
      

  5.   

    在页面第一次加载时,color_list.selecteditem.text的值是什么
      

  6.   

    不用Ispostback = true,textbox值都没有
      

  7.   

    ispostback就是判断当前页面是不是你提交过后再次由服务器回传过来的
    当你访问页面的时候,这时在服务器端创建的页面对象的IsPostBack属性为false 
    当你对这个页面进行提交的时候 (比如button点击了一下提高数据)这时会把你页面控件里的值回传给服务器,
    然后服务器就又创建了一个新的页面对象,并且从页面的ViewState中读取回传到服务器的信息 
    这个新的页面对象的IsPostBack属性就为true了 。
    你可以看一下ASP页面的生产周期。