将 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 事件的信息