玩转C科技.NET

每天都在学习,每天都在退步 为什么?世界发展太快! 怎么办?加快学习速度! 如何做?关注.NET社区 进阶中……

导航

<2008年9月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

统计

公告

Subscribe to this feed
Contact volnet online!

MSN群MyMSDN技术讨论群
群号:www.msdn@hotmail.com
Windows Live Alerts
欢迎大家踊跃加入讨论任何与技术有关的问题。
————————————
欢迎给我发送邮件:
volnet@tom.com
[标题格式]:[TO玩转C科技]<您的用户名/匿名>[<主题>]
————————————

 
您可以直接Gmail联系我噢!(Gtalk/Mail)
开机自启动,天天都在线哦!

LiveMessenger:
<My Library>

与我联系

搜索

 

常用链接

留言簿(4)

我参与的团队

我的标签

随笔分类(119)

随笔档案(105)

文章分类(15)

文章档案(15)

相册

家园建设

最新随笔

积分与排名

  • 积分 - 150482
  • 排名 - 245

最新评论

阅读排行榜

评论排行榜

最新评论

共9页: 1 2 3 4 5 6 7 8 9 下一页 
re: 动态加载控件_常见问题解决之道 volnet(可以叫我大V) 2008-08-30 00:32  
@肥虾米
可否描述详细点,不是太理解您的意思
我加载自定义控件的时候碰到一个问题,控件加载不进来,这是为什么??每次运行到"CType(Me.AxReceiptXFS1, System.ComponentModel.ISupportInitialize).EndInit()"的时候就报"动态链接库(DLL)初始化失败"这个错,楼主帮我下啊,是一个ocx控件,而且我已经注册过了
我旅居新加坡,希望能的到林妙可的歌唱祖国的歌
re: 动态加载控件_常见问题解决之道 昏天黑地 2008-08-09 19:46  
其实这个问题就像搂主说的,是在后来的回发中没有再一次创建同样的控件造成的。一般地,用户控件特定的内容可以使用ControlState在回发之间保存。ViewState用来保存容器的状态是比较合理的。但使用ViewState存在一个动态加载控件时机的问题。
我在这里简单按发生先后次序列出几个主要的页面事件:
PreInit
Init
InitComplete
PreLoad
Load
(controls events, such as someButton.Click event)
LoadComplete
比较正宗的加载动态控件的事件似乎是在Init时,因为这样在后续的处理中可以借助asp.net页面处理的机制自动完成动态加载的控件的值的回填。就是说,asp.net会处理ViewState和ControlState,一遍能够把动态加载的控件的值正确地设置到控件的属性中。这样在Load事件里就能够读到控件的值了。这在某些情形下还是有用处的,因为可能会依赖某个控件的取值而使用不同的数据绑定逻辑来初始化页面。比如说在业务系统根据中不同的销售方式可能会造成可选的促销品列表发生变化。
但要在Load(确切地说是PreLoad)之前动态加载控件还存在一些困难。经常地,我们会把需要动态加载的哪些控件的一些标记性的信息放在ViewState里。但这里存在一个asp.net在何时加载ViewState的问题。事实上,asp.net页面会两次尝试加载ViewState(至少目前根据实验得到的证据表明是这样的)。第一次是发生在InitComplete以后,第二次是在Load事件处理完成以后。至于为什么这样做我们只能猜测。一个事实是这样做我们在控件的事件处理程序中(比如someButton.Click)是可以通过控件的属性取得控件的取值的。然而依赖asp.net页面自己的处理过程,在Init阶段是无法得到ViewState的值的。于是我们就无法知道应该动态加载哪些控件。但如果把动态加载控件放在Load中,我们就无法在Load中通过控件的属性获取控件的取值,从而无法完成复杂的数据绑定初始化的逻辑。
我再把这个问题直观地表达在下面:
PreInit
Init (此时asp.net页面处理过程尚未加载ViewState,因此无法获得我们在需要动态加载哪些控件的信息)
InitComplete
<---- asp.net页面处理过程在这里尝试加载ViewState
PreLoad
Load
<---- asp.net页面处理过程在这里再次尝试加载ViewState
控件的事件处理程序 (在这里可以获取控件的值)
LoadComplete
...

这样一来问题变成了我们如果要使用ViewState来保存动态加载控件的信息,则只能在Load阶段加载控件。而这样又无法完成复杂的数据绑定逻辑。所以为了解决问题,很多人选择使用Session等其它机制来保存要动态加载哪些控件的信息。这种解决方案不是不可以,但有一些弊端。其一是增加了服务器端的开销;其二是Session有过期的问题;其三是Session不是局限于某个页面的,有可能存在Session中Key的冲突从而存在造成某些问题的风险。
而使用其它的机制比如说用某个hidden来存储该加载哪些控件的信息,而在Init阶段使用Request.Form来获得hidden的内容。这种方式也总让人感觉不大美妙。
实际上要解决这个问题并没有什么太美妙的方法。asp.net 2.0提供了一个扩展机制 - PageStatePersister。PageStatePersister只是一个抽象基类,如果要从页面的__VIEWSTATE中获取,则可以使用HiddenFieldPageStatePersister类。使用这个机制可以在你想要的时候手动为页面加载ViewState。这样就可以在要动态加载控件前手动加载ViewState了。关于这个扩展机制,我在这里提供一些链接供大家参考。
http://aspnetresources.com/blog/page_state_persisters_overview.aspx
http://aspnet.4guysfromrolla.com/articles/011707-1.aspx
感觉用处不大
至于singleton,还是lazy initialization更重要。
确实可行,效果不错啊,这个思想是模拟了BODY
大家好,由于之前《from0toknow》_cpp_pdf.rar文件使用《from0toknow》_c++_pdf.rar作为文件名,现在博客园的文件系统可能无法下载带有+号的文件,现在已经更新为《from0toknow》_cpp_pdf.rar了,欢迎大家下载。
@Ariex
BI是哪里?麻烦给个链接?
@痴情客
IE6咋办?忘记他们,那些遗老遗少们就会升级自己的浏览器了

BI的web标准化区有讨论过,也给出了IE6下position:fixed的解决方法
@attitude
谢谢噢~

@痴情客
破坏HTML不敢说,我们只是自立门户罢了,够不上破坏啊

@NormRen
我也不知道他们用啥,呵呵,回头研究一下

@汉城
谢谢
大V同志
http://qqmail.qzone.qq.com/
这里右下角的TOP按钮是这个原理实现的吗?
html弄的少,不过效果不错的,不知道会不会象楼上说的,破坏HTML结构.

以后要加东西,或修改的时候,碰到问题?

求教....
你这么做等于破坏了html结构,一般是不推荐这样做的。

其实完全还可以使用 你说的第一种 position:fixed 方法,那么ie6怎么办?

很简单,要么干脆不显示,要么改用javascript实现,总之破坏html结构的事情我们尽量不要干
有点意思,挺好!
等下试一下效果!
不过好像为了一个固定做的工作有点多了!
呵呵!
@tempkevin
分页区?分页很多很多行么?一般如果只有一行,固定行高应该是比较好的选择。
这种方法以前就用过。比如一个页面要显示信息列表区和分页区。于是就将信息区域定义为90%的高度,因为考虑到border,所以分页定义为9%的高度,这个时候按百分比来分配的时候会出现不同分辨率下出来的效果不一样。这个不知道该怎么解决。
天哪,居然跑首页去,吓死我了……赫赫
这个系统很不错,学习啦
re: 动态加载控件_常见问题解决之道 volnet(可以叫我大V) 2008-07-06 02:45  
@Forrest_Hu
这个是下载代码中提供的一个类
re: 动态加载控件_常见问题解决之道 Forrest_Hu 2008-07-05 16:21  
我想请问 ContainerManager是在哪个类库里面的。。。
已经搞定了,呵呵,谢谢大V
re: 如何使用ASP.NET2.0的&ldquo;嵌入的资源&rdquo; volnet(可以叫我大V) 2008-06-18 01:03  
@ColdDog
呵呵,已经不记得2005 without SP1的样子了,您还是尽快升级SP1吧,或者直接换用2008比较好,呵呵
我的VS2005(没装sp1)第2步怎么没有“生成操作”这个属性?需要SP1?
VS2008就有。。。
@volnet(可以叫我大V)
原来如此,受教了。
re: 动态加载控件_常见问题解决之道 volnet(可以叫我大V) 2008-06-09 02:03  
@天启
其实能用Visable的场景都尽量不推荐大家用动态加载控件,因为动态加载控件需要自己管理更大一部分的生命周期,但这显然并不那么乐观。很多场景我们不可能预知我们要使用哪些控件,这就给开发带来的一定的未知性,因此这时候通常会采用动态加载控件的方式而不是使用Visable属性
为什么要动态加载控件而不是控制visible属性?
re: 如何使用ASP.NET2.0的&ldquo;嵌入的资源&rdquo; volnet(可以叫我大V) 2008-06-02 02:09  
@wauo
说的貌似在理,非常感谢啊,一时没有注意到,呵呵
只是考虑到static 字段被多个实例共享,如果页面第一次把资源记录到static 字段,再刷新页面就不会输出资源了,因为IsResourceRegistered将返回true~~是不是会有些问题~~~瞎掰下,错了请见谅
re: Google的真实性 Charly 2008-05-30 17:17  
楼主说得还是有点道理的,最开始的时候用的搜索引擎反正不是google,后来又用baidu,再后来就一直用google了。其实baidu也不错,但是他太倾利了,竞价排名,以及传说中的利用公关打击google,这些都让他的一些好处大打折扣。其实各大搜索引擎搜到的东西都大同小异,没有说谁比谁明显好多少。
re: 如何使用ASP.NET2.0的&ldquo;嵌入的资源&rdquo; volnet(可以叫我大V) 2008-05-30 02:04  
@wauo
我个人觉得静态在这里可以使用,至于是不是最好不做评论,Page.Items,因为这东西基本会用在控件上,在做控件的时候我们为什么要有Page呢?当然实际情况中是一定有Page的……
觉得这里不能用static 来存储,建议换成Page.Items来存储
@包建强
先观察一段,大家再看看有什么分类意见……
文章我基本都会浏览一遍的,至于《慈善跟踪项目》一文其实应该属于流程分析的,虽然题目看上去是有点赈灾了,当然收录在此只是代表它不属于广告翻译转载之流,至于能不能进精华集那是另一回事的说……
大V,坚持啊。我会定一个点,之后的文章就暂不收录了。可以移交给负责《博客园月刊》的朋友。

几点建议:
1)要加什么新分类,就和我说。同时你也从26开始递增。
2)跟踪前先大致看看文章,像《慈善跟踪项目》一文就不适宜收录。
3)系列文章只记录第一篇即可,后面有新作可以在同一行标注2、3、4,如:
《基于Mozilla Thunderbird的扩展开发》(五)(六)(七)
没有
如果,没有回复,就没有捐上
已经捐了当日的收入,兄弟姐妹没行动起来吧!
我的服务里没用SQL服务哦...
从技术层面上来说,受教了,多谢楼主指导。

从逻辑层面上来说,这相当于是一个BUG,因为编译器无权干涉我们怎么给函数起名(关键字例外)。
用移动的一发就收到回复了,但用如意通的号发了好几个信息也没有回复,也不知捐出去没有?希望灾区的人能平安无事,早日合家团圆!
让我们来一起帮助他们吧!愿灾区人民能早曰重建家园.
多灾多难的08,多灾多难的中国,我们有永不会服输永不能打垮的中国人!
发短信了,虽然不多,但聊表心意.祝福受灾的人们!
虽然地震前刚离开成都,但心情异常沉重
共9页: 1 2 3 4 5 6 7 8 9 下一页 
使用Live Messenger联系我
关闭