对待生活,应该怀着一颗感恩的心
置顶随笔 #
求职信 (Word格式)
简历 (Word格式)
计算机二级证书 (VB)
新闻中心颁发的荣誉证书
http://chengbo.net/resume
2007年5月2日 #
这个方法重写了 Page.SavePageStateToPersistenceMedium 和 Page.LoadPageStateFromPersistenceMedium 方法。代码注册了一个 __COMPRESSEDVIEWSTATE 的隐藏字段,把压缩的 ViewState 放在其中,不再使用原先的 __VIEWSTATE 字段。
我要做的一个页面的情况是,顶部有很多选择查询参数的控件,用户首先输入参数,再点击搜索按钮后系统会把搜索出来的记录集显示在 UpdatePanel 里的 GridView 上;若不选择参数, GridView 上会显示数据库中所有的记录集。使用上面的代码在未启用局部刷新时没有问题,但是启用的话,假如用户第一次选择了一些参数,搜索,GridView 会绑定显示搜索出来的记录集,但是这时点击 GridView 的分页按钮, GridView 重新显示的却是所有记录集,也就是说, ViewState 丢失了。
禁用 Ajax 或不用上面的方法压缩 ViewState ,都可以恢复正常,但如果我两个都想要呢?好在这世上有 Google 这东西,我搜索到了下面的解决方案:
如果用 Reflector 看看 System.Web.UI.Page 类的 SavePageStateToPersistenceMedium 和 LoadPageStateFromPersistenceMedium 方法,你会发现上面的代码和微软的实现差不多,都是使用 Persister.Save 和 Persister.Load 来保存和获取 ViewState (只是上面的代码加上了压缩和解压的逻辑),这里的 Persister 是默认的 HiddenFieldPageStatePersister ,所以页面还是使用 __VIEWSTATE 字段来保存 ViewState。
改成第二段代码来压缩 ViewState 就正常了。至于第一段代码会在 Update Panel 中出问题,我是这样猜的:
启用 UpdatePanel 的局部刷新并不是真正的局部刷新,只不过微软做了点手脚,用 XMLHttpRequest 对象去向服务器提交请求,而服务器毫不知情,还是会生成一个完整的页面生成周期,把生成的 HTML 完整的返回,这时 ScriptManager 把不在 UpdatePanel 里的内容统统去掉,只接收 UpdatePanel 里面的内容,然后在客户端刷新一下,造成局部刷新的“假像”。问题就出在用 XMLHttpRequest 对象去请求服务器的时候,ScriptManager 不知道我们把 ViewState 放在 __COMPRESSEDVIEWSTATE 字段中,而用的是 __VIEWSTATE 字段里的内容,所以服务器会认为用户没有输入查询参数,返回了数据库中的所有记录……
问题好像就是这样产生的,不过我还有点不清楚,Persister.ControlState 和 Persister.ViewState 各是什么意思, MSDN 上也没说太明白,哪位大虾解释一下?参考
2007年3月31日 #
有时候,firefox 的窗口大小会被你正在浏览的网页所改变(比如说点击 wordpress 后台“编辑 HTML”按钮的时候),这让我感到很不舒服,就像弹出广告一样,我相信大家都不会喜欢。其实有一个简单的方法可以让 firefox 的窗口不再被网页改变。
简单而又非常有效的一个方法,希望你能喜欢。技巧来源
2007年2月27日 #
原文
2007年1月25日 #
在输入密码的时候,用户不看键盘的话很难知道自己是否启用了大写,所以到经常因为大小写错了而被系统拒之门外。
其实一段js代码就可以解决这个问题。
试试效果吧。
2006年12月29日 #
2006年11月29日 #
2006年10月17日 #
2006年9月20日 #
注意:请直接致电:86256791,傅小姐.或发邮件:qukanshu@gmail.com
主要工作:基于Linux/MYSQL/PHP或ASP/WINDOWS/MSSQL开发大型网站程序.
要求:1.精通HTML,ASP,.NET,CSS+DIV,MSSQL数据库2.熟悉VB,VC,DELPHI程序语言其中一种3.有强烈的创新精神与团队意识4.精通XML/XSLT/CSS/JAVASCRIPT者优先5.有大型网站开发经验者优先
备注:我们的招聘没有任何学历限制,我们只看重: 1.素质修养 2.学习能力我们为每一个团队成员提供广阔的发展空间和学习机会,及富有竞争力的薪酬和福利.
注意:请直接致电:86256791,傅小姐.或发邮件:qukanshu@gmail.com代人招聘,不要与我联系,谢谢
2006年9月19日 #
建job可以用企业管理器,但这样的话发布会比较麻烦,所以今天查了一下用tsql建job的方法。
建job分三个步骤:add job -> add schedule - > add step
分别由三个sp完成:sp_add_job sp_add_schedule sp_add_jobstep
给这三个sp加上一些参数,执行就OK了,run之前别忘了USE msdb哦
2006年8月30日 #
在项目中,需要将一个DataGrid中的信息传入数据库进行更新,前提是无法使用DataAdapter,请教了师傅,才知道了还有xml参数这个东东可以完成这个任务。
存储过程如下:
传入三个参数,第一个是包含数据的XML,通常用DataSet.GetXml()方法就可以获得;第二个是DataSet名字;第三个是DataTable的名字。
具体使用方法,可以查看联机帮助。最近我越来越懒了,呵呵。
Powered by: 博客园 Copyright © chengbo