将TextBox设置为ReadOnly会阻止更新面板中的回发

时间:2017-03-27 22:29:13

标签: c# asp.net ajax webforms asp.net-ajax

我的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修改它)来调用我的事件处理程序。

我希望只读取文本框,以便用户只能通过日期选择器修改文本框内容。但是,当我这样做时,不再调用事件处理程序。

有没有办法解决这个问题?

1 个答案:

答案 0 :(得分:1)

我认为在更新文本框值后,您必须自己手动触发回发事件。您实际上可以像TextBox一样利用__doPostBack事件。

__doPostBack('addScheduleEffectiveStartDate','')

请注意,这将是上面的doPostBack示例中使用的完整ClientID。

这是一个SO post,它详细介绍了如何使用doPostBack调用TextChanged事件