将 TextBox 设置为 ReadOnly 可防止更新面板中的回发
Setting TextBox to ReadOnly prevents postback in update panel
我的ASP.NET代码如下:
<script type="text/javascript">
jQuery(document).ready(function() {
jQuery("#addScheduleEffectiveStartDate").datepicker({
minDate: new Date() // Date must be at least today
})
})
</script>
<asp:UpdatePanel ID="serviceTypeUpdatePanel" runat="server">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="addScheduleEffectiveStartDate" EventName="TextChanged" />
</Triggers>
<ContentTemplate>
<asp:TextBox ReadOnly="false" AutoPostBack="true" runat="server" ID="addScheduleEffectiveStartDate" OnTextChanged="addScheduleEffectiveStartDate_TextChanged" />
</ContentTemplate>
</asp:UpdatePanel>
这按预期工作 - 当我更改日期时调用我的事件处理程序(通过在框中键入或从 DatePicker 修改它)。
虽然我想将文本框设置为只读,这样用户只能通过日期选择器修改文本框内容。但是,当我这样做时,不再调用事件处理程序。
有办法解决吗?
我认为您必须在更新文本框值后自己手动触发回发事件。您实际上可以像 TextBox 一样利用 __doPostBack 事件。
__doPostBack('addScheduleEffectiveStartDate','')
请注意,这将是上面 doPostBack 示例中使用的完整 ClientID。
这是一个 SO post,其中详细介绍了有关使用 doPostBack
调用 TextChanged 事件的信息
我的ASP.NET代码如下:
<script type="text/javascript">
jQuery(document).ready(function() {
jQuery("#addScheduleEffectiveStartDate").datepicker({
minDate: new Date() // Date must be at least today
})
})
</script>
<asp:UpdatePanel ID="serviceTypeUpdatePanel" runat="server">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="addScheduleEffectiveStartDate" EventName="TextChanged" />
</Triggers>
<ContentTemplate>
<asp:TextBox ReadOnly="false" AutoPostBack="true" runat="server" ID="addScheduleEffectiveStartDate" OnTextChanged="addScheduleEffectiveStartDate_TextChanged" />
</ContentTemplate>
</asp:UpdatePanel>
这按预期工作 - 当我更改日期时调用我的事件处理程序(通过在框中键入或从 DatePicker 修改它)。
虽然我想将文本框设置为只读,这样用户只能通过日期选择器修改文本框内容。但是,当我这样做时,不再调用事件处理程序。
有办法解决吗?
我认为您必须在更新文本框值后自己手动触发回发事件。您实际上可以像 TextBox 一样利用 __doPostBack 事件。
__doPostBack('addScheduleEffectiveStartDate','')
请注意,这将是上面 doPostBack 示例中使用的完整 ClientID。
这是一个 SO post,其中详细介绍了有关使用 doPostBack
调用 TextChanged 事件的信息