日期:2014-05-19  浏览次数:20452 次

复合控件在GridView中做为模板列出现时,其子控件的ID值不唯一,百思不得其解,求解
我的复合控件继承   CompositeControl,   INamingContainer。
我把这个控件做为模板列放在GridView中
在我的测试页面中,当GridView有多行时,模板列中的复合控件的子控件的ID是唯一的,是UniqueID。
最郁闷的是,在业务系统中,当GridView有多行时,模板列中的符合控件的子控件的ID是不唯一的,都是一个名字,真是郁闷啊,有谁知道是怎么回事??


------解决方案--------------------
看看服务器与本地的.net framework版本是否一至?
------解决方案--------------------
“模板列中的复合控件的子控件的ID是唯一的,是UniqueID”

看不懂你这话是什么意思。ID是你复合控件中设计的,怎么可能跑到模板列上去看到?在运行时,ID肯定都是一样的,但是它们在你复合控件内部,而你复合控件实现了INamingContainer,那么相同ID的子控件它的客户端html上的ID自然不同。而ClientID代表客户端id,UniqueID代表客户端name,这些都与服务器端的ID天生就不等,你说的上面那句话我看起来就是不可能发生的,除非你采取了什么非常手段将本来正确输出html中的ClientID给改错了。

“模板列中的符合控件的子控件的ID是不唯一的,都是一个名字”这我就更看不懂了,逻辑不通的呀!