露雨城市-南京.NET爱好者
主要讨论的为C#,ASP.NET,Sql Server2005,包括VSTS 2005的相关工具和功能。
posts - 29,  comments - 122,  trackbacks - 10
我今天在做例子的时候,在datalist中的模板列中加了两个textbox,然后进行绑定,因为我又放了一个日历控件,所以为了客户端不刷新,我就加了ajax控件,然后把日历控件拖到ajax控件中UpdatePanel中.

结果我发现日历控件直接暴露在当前的Page实例中了,也就是说可以直接使用Calendar1.SelectedDate来得到它的值了.而在之前都是要通过FindControl("Calendar1")来实现的.

可是奇怪的事发生了,我接着用了FindControl("TextBox2")的方法,想得到第二个广本框的对象引用,然后给它赋上日历控件当前选择的日期值.因为我是在日历控件的onSelectionChanged事件中写的,所以怎么也没得到值.
我发现明明已经得到文本框的对象引用了,可是赋值无效.我猜想是UpdatePanel的问题,于是我把TextBox2也放到了UpdatePanel中来,结果可以了,而且TextBox2也直接暴露出来了.

那我在onSelectionChanged中直接写TextBox2.Text = Calendar1.SelectedDate.ToShortDateString();就行了.

方便是方便了,不过不知道这是好还是坏,因为我不明白这里面的原理,我接触vs2005的ajax控件也没多久,所以我想了解的深入一点,请高手能够指教这里的原因,以及暴露控件ID的原理或更多内容,谢谢.

想先放在首页几天,得到答案后,我就会自动取消放在首页的,请dudu支持,谢谢.
posted on 2007-08-08 17:33 露雨城市.NET2.0和Sql Server 2005开发研究 阅读(218) 评论(1)  编辑 收藏 所属分类: C# 2.0ASP.NET 2.0

FeedBack:
2008-03-08 14:27 | 戒焦戒躁      
之所以UpdatePanel中的控件可以直接引用,是因为UpdatePanel的ContentTemplate是标记了“TemplateInstance(TemplateInstance.Single)”属性的,这就意味着其中的控件ID是不会被重复使用的(除非你故意要在页面上放两个相同ID的控件),所以不需要通过FindControl("Calendar1")这种方式来引用。
现在Asp.net Ajax 1.0的源码微软已经放出来了,你可以查看一下UpdatePanel控件的源码。
  回复  引用  查看    

标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
"五向定位"职业成长路线公开课(上海、南京、大连)
Google站内搜索


相关链接:
 
 网名:MOON
 博客:luyu.cnblogs.com
 网站:露雨虚拟城市
 QQ:80188871 (注明.net爱好者)
 mail:moonxp@126.com


<2007年8月>
2930311234
567891011
12131415161718
19202122232425
2627282930311
2345678

与我联系

搜索

 

常用链接

留言簿(6)

我参与的团队

随笔分类(35)

随笔档案(29)

收藏夹(34)

个人网站

  • 露雨虚拟城市
  • 我的个人网站,欢迎大家访问交流,交个朋友吧。 本人是南京的。 :)
  • 设计资源无限网-韩国网站模版
  • 平面设计资源,韩国网页模版,韩国网页设计,韩国网站设计,韩国模版,矢量图,韩国矢量图,韩国素材,韩国设计资源,网站设计,网页设计

优秀Blog

最新随笔

积分与排名

  • 积分 - 46266
  • 排名 - 961

最新评论

阅读排行榜

评论排行榜