发布新日志

  • CTTS工作总结

    2008-06-11 10:35:34

    上周一加班到晚上快12点了,版本依然没有发出去,还是等到周二了才发的,上周五加班到凌晨2点,一个星期连着两天加那么晚的班,人好累好累,PM急着交版本,当时我也没有那么多的时间把测试走的非常仔细,后来课想而知,客户给我们的反馈是多么的不好,尤其是对QA的质问,提出的六个问题,只有一到两个是测试的问题,一个问题是需求不明确导致的,这个项目开始到结束就没有一个很规范的需求文档,后来的需求也是PM与客户口头交流,测试总结整理的,也许都没有经过可是的确认,另外三个问题是不存在的问题,是经过测试好了的

    只是觉得太不应该了,加班加那么晚,真的是吃亏不讨好,不过就当作是一个经验,第一我们的需求必须是明确的,是有email 文档可以追踪的,而不是口头交流的文档,更不可能是测试来整理需求,就算是也必须是客户得到确认后的,第二发版本的时候一定要交Release Note,把测试中发现的问题说清楚,第三女孩子一定要少加班,最多到1030就走,加班太多太晚容易变老的,以后就算加班我也只是最晚到10:30就走,在也不加那么晚了,老板不会心疼你,也不会给你加工资,在晚发出去的版本问题会更多,疲劳战的效果总不那么理想的,身体是自己的,要好好爱护自己的身体。

  • ASP.NET的Page.IsPostBack 属性

    2008-02-28 18:07:01

     

       现在现在做开发有段时间了,总体感觉就是一个字“累”,今天遇到了一个session的问题,报表页面在点击【Report Display】 button时,报表会显示数据以及参数,但是转入其他页面从新在进入此报表页面的时,报表数据的被绑定了,所以session依然存在,但是参数没有被绑定,此时就会提示“The report you requested requires further information”要求输入参数值

      从对ASP.NET页面的执行顺序开始,体会一下B/S结构的程序的特点,下图是ASP.NET页面的执行顺序说明:

      Page_Init(页面初始化引发的事件)——>Page_Load(加载页面时引发的事件)——>Control   Event(服务器控件引发的事件)——>Page_UnLoad(页面从内存中卸载时引发的事件)

      Page_Init和Page_UnLoad不常用,但是这里还是要说明一下。Page_Init和Page_Load事件区别在于,只有后者才能完全加载控件,绑定数据,虽然你可以在Page_Init中访问控件,但是其viewstate都不会被加载,所以此时控件中只拥有默认值。

      这里说到了viewstate,我们先来做一个大致的了解——其实在ASP.NET中有两个viewstate。一个是控件本身的,用来维护控件自己的一些状态,比如说某个空间有变色的功能,它的viewstate就维护这个功能,这个viewstate是不能被用户访问的。相信自己写过控件的朋友都会有这样的感觉,自己写控件当然也要用自己的一个viewstate来维护这个控件的状态;而另外一个viewstate,是用户使用的,这个viewstate和Session几乎一模一样,必须要先对其进行定义,才能使用。

      每当点击ASP.NET的Web网页上的Button、LinkButton或ImageButton等控件时,表单就会被发送到服务器上。如果某些控件的AutoPostBack属性被设置为true,那么当该控件的状态被改变后,也会使表单会发送回服务器。?(AutoPostBack属性,它只有两个bool值,true/false。如果这个属性被设置成false,那么点击后就不会立刻将变化传给服务器处理,也就不会有该控件的SelectedIndexChanged事件。)

      每次当表单被发送回服务器,就会被重新加载,启动Page_Load事件,执行Page_Load事件处理程序中的所有代码(注意,是每次都会执行!)。
    很显然把网页的初始化代码放在这里是最合适不过。我们经常会希望在每次加载网页时执行一些代码,如一些控件的数据绑定。

      当我们希望只有在网页第一次加载时执行另一些代码(基本上都是数据的默认绑定),甚至希望一些代码在除首次加载外的每次加载时执行。那么我们可以利用IsPostBack特性来完成这一功能。在网页第一次加载时,该属性的值是false。如果网页因回送而被重新加载,IsPostBack属性的值就会被设置为true。

      在ASP.NET应用程序中,如果需要在页面第一次显示时执行一些初始化操作,必须判断IsPostBack属性!

      在ASP.NET使用Page.IsPostback,那么就可以避免往返行程上的额外工作:如果处理服务器控件回发,通常需要在第一次请求页时执行代码,该代码不同于激发事件时用于往返行程的代码。如果检查?Page.IsPostBack?属性,则代码可按条件执行,具体取决于是否有对页的初始请求或对服务器控件事件的响应。这样做似乎很明显,但实际上可以忽略此项检查而不更改页的行为。该属性用的好坏,直接关系到你程序运行是否按照你最初的意愿,也关系到整个页面的效率。因为,如果每次都会给控件绑定数据,不管你是第一次访问,还是提交了数据以后,那么这个页面程序的效率可想而知。

      一个B/S结构的页面每一次提交,它都会重新从头到尾执行一次。而C/S结构的程序就不会这样,这是和C/S结构的程序最大的区别!其实,得不到控件的数据,都是因为这个原因。

Open Toolbar