动态生成控件问题

动态生成控件,在C/S模式中一般由事件驱动来完成,当事件发生时则执行动态生成的代码即可,而在B/S动态生成一些东西我们可能就要放入PageLoad中来实现,但世事无绝对,只要我们不需要为控件绑定事件则也可通过控件事件来完成。比如动态生成控件并为其绑定事件(如果在事件中做就只能生成控件,但是事件绑定不了。

下面提供两种思路来解决:

(1)在事件中写入动态生成的代码,在事件执行过后我们强制页面再次刷新,这个时候事件就会在刷新时绑定到控件。

(2)在PageLoad事件中写入动态生成代码,由事件引发页面回传刷新执行PageLaod达到执行生成代码的效果,那么就又出现另外一个问题,我们怎么去判断这段代码在PageLoad中什么时候执行呢,毕竟每个页面事件都会引发页面回传,我们要如何去判断到底是不是我们想要的那个控件事件引起的页面回传呢? 提供解决办法:我们可以用Page.Request.Params.Get("__EVENTTARGET");这种方法拿到控件名,然后去判断和我们需要的控件ID是否匹配,匹配则说明正确,不匹配则不执行。ok,我们已经创建了动态的控件,这时候新的问题又来了!当其他控件事件引起页面postback时,动态创建的控件被刷没了....!何解? 只有让其他控件也参与这个这段代码的执行,但是这似乎又违背了我们的初衷,我只想XXX点击的时候新建啊!那都不是事,一个笨的方法可以帮我们解决,使用隐藏标签,用来记录我们这个控件是否生成了,如果控件已然被我们想要的那种情况生成了,那么后面大家都可以参与进来一起happy,如果还没被我们指定的控件尝鲜,大家都别想动,哈哈。当然这都是笨方法,但是对于一个刚转B/S不到一周还不会写前台js脚本的人来说算是一个解决思路吧,但是既然转了B/S我们自然以前台动态刷新为主。下个博文可能就会Ajax走起,敬请期待。