__dopostback无法按预期工作

场景1(可行)这是我创建的POC。 我有一个脚本管理器,一个html文本框,一个ASP.NET按钮,一个为上述按钮的Click事件设置异步触发器的updatepanel。 对于我有的html文本框, onkeyup='__doPostBack('','') 。 并且它工作,点击按钮的Click事件,并且updatepanel异步更新。

场景2(它不起作用)与我的实际代码库的唯一区别是我有一个JQUERY FILAMENTGROUP datetimepicker,其onchange事件被使用而不是html文本框的onchange。 此外,这里我的页面使用母版页。 现在,我的问题是,当datetimepicker的onchange事件触发时,请求进入服务器端,但是BUTTON click事件没有被触发。

更多细节,我想在datetimepicker选择中自动更新updatepanel。 所以,按钮实际上是通过css隐藏的(display:none)。

按钮ID – btnDateRangeCallback

Datetimepicker文本框(非ASP控件) – dateRange

  onChange: function() {__doPostBack('', $('#dateRange').val());} 

[请记住我说它适用于我的简单POC,而在我的实际代码库中我使用的是母版页inheritance,因此所有这些控件都放在contentplaceholder中。 此外,回发正在发生,如果我在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点击事件?

请改用UniqueID: __doPostBack('<%=btnDateRangeCallback.UniqueID %>', ...

为什么不单击按钮?

 onchange="$('#<%= ASPBUTTON.ClientID %>').click()" 

(理想情况下,不要使用内联事件处理程序……)

如果这对您没有好处,您可以使用__EVENTTARGET__EVENTARGUMENT来解决它(请参阅此文章以获取指南)。