场景1(成功)
这是我创建的一个概念验证。
我有一个脚本管理器、一个HTML文本框、一个ASP.NET按钮、一个设置为上述按钮点击事件的异步触发器的UpdatePanel。对于HTML文本框,我使用了onkeyup='__doPostBack('<%=ASPBUTTON.ClientID%>','')
。它可以工作,按钮的点击事件被触发并且UpdatePanel以异步方式更新。
场景2(未能工作) 与我的实际代码库唯一的区别是我使用了JQUERY FILAMENTGROUP日期选择器的onchange事件,而不是HTML文本框的onchange事件。此外,我的页面使用了主页面。现在,我的问题是当日期选择器的onchange事件触发时,请求会发送到服务器端,但BUTTON的点击事件没有被触发。
更多细节, 我想在日期选择器被选中后自动更新UpdatePanel。因此,该按钮实际上会通过CSS隐藏(display:none)。
按钮ID - btnDateRangeCallback
日期选择器文本框(非ASP控件)- dateRange
onChange: function() {__doPostBack('<%=btnDateRangeCallback.ClientID%>', $('#dateRange').val());}
请记住,我说它在我的简单POC中可以工作,而在我的实际代码库中,我使用主页面进行继承,因此所有这些控件都放置在内容占位符中。此外,发生了回发,如果我在Page_Load处断点,我可以看到正确发送了_EVENTTARGET和_EVENTARGUMENT。
请帮忙。
更简单地说,在回发后,当我在Page_Load处断点时,我看到Request.Form的内容为:
ctl00%24ContentPlaceHolder1%24SMgr1=ctl00%24ContentPlaceHolder1%24SMgr1%7cctl00_ContentPlaceHolder1_btnDateRangeCallback &__EVENTTARGET=ctl00_ContentPlaceHolder1_btnDateRangeCallback &_EVENTARGUMENT=5%2f3%2f2011+-+6%2f2%2f2011 &_VIEWSTATE=%2fwEPDwULLTE3NDY5NDIwMDRkZIuTqMNNsFHlRYhjpKaUCaCXj42h &_EVENTVALIDATION=%2fwEWAgLBx52kBALP6Ln6DdkkwE%2frVIKQzKE1L0k4QhIc768w &_ASYNCPOST=true&为什么btnDateRangeCallback的Click事件没有触发?