方案1(可行)这是我创建的POC。我有一个脚本管理器,一个HTML文本框,一个ASP.NET按钮,一个为上述按钮的Click事件设置了异步触发器的updatepanel。对于html文本框,我有onkeyup='__doPostBack('<%=ASPBUTTON.ClientID%>','')
。并且可以正常工作,点击按钮的Click事件,并且updatepanel异步更新。
方案2(不起作用)与我的实际代码库的唯一区别是,我有一个JQUERY FILAMENTGROUP datetimepicker,其onchange事件被使用,而不是html文本框的onchange。此外,这里我的页面使用母版页。现在,我的问题是,当datetimepicker的onchange事件触发时,请求转到服务器端,但BUTTON click事件没有触发。
更多细节,我想在选择datetimepicker时自动更新updatepanel。因此,该按钮实际上将通过CSS隐藏(显示:无)。
按钮ID-btnDateRangeCallback
Datetimepicker文本框(非ASP控件)-dateRange
onChange: function() {__doPostBack('<%=btnDateRangeCallback.ClientID%>', $('#dateRange').val());}
请帮助。
简单地说,回发后,当我在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事件?setTimeout(function () { __doPostBack('btnSave', '') }, 500);
使用“ btnSave ID”。它将在所有浏览器中运行。
onchange="$('#<%= ASPBUTTON.ClientID %>').click()"
(理想情况下,也不要使用内联事件处理程序...]
如果这对您不利,则可以使用__EVENTTARGET
和__EVENTARGUMENT
进行解决(有关指南,请参阅this article。