zoukankan      html  css  js  c++  java
  • Page_Load不要忘了if (!IsPostBack)

    Page_Load不要忘了if (!IsPostBack)

    问题:在DropDownList的SelectedIndexChanged事件中绑定数据,运行时,DropDownList控件的SelectedIndexChanged事件失效。

    Details:改变DropDownList的选项后,页面自动初始化回原来设置。

    思考原因:

    (1)DropDownList的SelectedIndexChanged事件代码编写有误 || 事件中引用的自定义数据绑定方法有误|| 引用的BLL层方法有误 || BLL层所引用的DAL层方法有误 || DAL层所用存储过程及其参数有误。——检查无误

    (2)clue:DropDownList选项改变后,自动变为页面初始化的值,导致SelectedIndexChanged事件失效。

    问题所在Page_Load 事件中直接是绑定DropDownList数据的代码。这样,当DropDownList选项改变,触发SelectedIndexChanged事件 时,系统会自动先重新执行Page_Load(),再执行SelectedIndexChanged,所以选项总会初始化为默认值,GridView中的 数据自然不会改变。

    解决:在Page_Load事件中加上if (!IsPostBack),并把绑定数据放在if (!IsPostBack)中,如下

    有关if (!IsPostBack):

    经常有人忘记写if (!IsPostBack)结果导致提交后取不到用户所选择的列表的值,因为Page_Load先执行,控件被重新初始化了。

     

    所以,如果你是通过服务器控件触发事件来进行数据库更新的话,在你的page_load事件中把所有程序放在if (!IsPostBack)里面,否则你会发现显示的总是第一次载入的值。

     

    一个页面第一次显示的时候IsPostBack=false,然后你在这个页面上点击按钮或其它东西提交的时候,IsPostBack=true。

     

    if(!IsPostBack),获取一个值,该值指示该页是否正为响应客户端回发而加载,或者它是否正被首次加载和访问。

     

    IsPostBack 由于用户交互(page.submit())提交页面而产生的加载,二次加载。第一次加载页面时,Page.ispostback是false,当触发该 页面的web控件时,产生回发,这时候该属性会是true,所以要用if(!IsPostback)来判断,只在第一次进入页面时加载数据。

     

    Details:

     

    (1)if (!IsPostBack) 里面的代码只执行一遍,即页面第一次加载时。

     

    (2)以后页面重新刷新时,if (!IsPostBack)里面的语句不执行。

     

    (3)首次建立页面 IsPostBack为false,用来控制里边的语句只执行一次。

     

    (4)在对控件进行数据绑定时是必须加上的,因为如果不加的话,每一次响应客户端回发时,总是要执行一次Page_Load(),接着又要执行数据绑定的语句了,如此你不能选择数据了。

  • 相关阅读:
    拍照
    【HDU 4372】 Count the Buildings (第一类斯特林数)
    【HDU 5370】 Tree Maker(卡特兰数+dp)
    【HDU 4436】 str2int (广义SAM)
    【BZOJ 3926】 [Zjoi2015]诸神眷顾的幻想乡 (广义SAM)
    【HDU 5184】 Brackets (卡特兰数)
    【HDU 1133】 Buy the Ticket (卡特兰数)
    【BZOJ 1191】 [Apio2010]特别行动队 (斜率优化)
    【BZOJ 1597】 [Usaco2008 Mar]土地购买 (斜率优化)
    【BZOJ 1096】 [ZJOI2007]仓库建设 (斜率优化)
  • 原文地址:https://www.cnblogs.com/disneyland/p/4133368.html
Copyright © 2011-2022 走看看