【问题标题】:ASP.Net AjaxControlToolkit CalendarExtender not updating Textbox in code behindASP.Net AjaxControlToolkit CalendarExtender 不更新后面代码中的文本框
【发布时间】:2013-09-11 12:13:43
【问题描述】:

具备以下条件:

<asp:TextBox ID="txtStart" runat="server" Enabled="false"></asp:TextBox>
<asp:Image ID="ibDateS" runat="server" ImageUrl="../SystemImages/calendar.gif" ToolTip="Click to show calendar" AlternateText="Click to show calendar" CssClass="showpointer" />                                                
<ajaxToolkit:CalendarExtender ID="ceStart" PopupButtonID="ibDateS" Format="dd/MM/yyyy" TargetControlID="txtStart" runat="server"></ajaxToolkit:CalendarExtender>

在 DOM 上一切正常,文本框使用新日期更新,但是当我尝试在后面的代码中获取值时,即 txtStart.Text 它仍然具有在 Page_Load 上设置的原始值。

我错过了什么吗?

编辑: 最初在 Page_Load 中设置的 TextBox(是的,包含在 if(!IsPostback) 中):

txtStart.Text = DateTime.Now.ToString("dd/MM/yyyy");

稍后再获取:

DateTime dtStart = Convert.ToDateTime(txtStart.Text);

【问题讨论】:

  • 你如何尝试获得价值..你有任何回发事件
  • 你在哪里评估代码隐藏中的文本属性,你在哪里设置它?我认为这是标准问题:人们忘记将他们的数据绑定部分包装到 if(!PostBack) 块中。
  • 请告诉我你的代码。
  • 你能发布Page_Load代码吗?
  • 参见上面的编辑,没有问题设置,日历扩展器更改文本框中的值没有问题,只是单击按钮保存详细信息时没有获取更新的文本值。

标签: asp.net ajaxcontroltoolkit


【解决方案1】:

经过一番研究,显然在页面上将文本框设置为 readonly 或 enabled="false" 存在问题。删除它并将以下内容添加到 page_load 解决了问题:

txtStart.Attributes.Add("readonly", "readonly");

【讨论】:

    【解决方案2】:

    如果您没有使用页面的Page.IsPostBack 属性,请使用它并尝试在其中使用您的页面加载代码。看来可能是Page.IsPostBack的问题,试试看

    protected void Page_Load(object sender, EventArgs e)
    {
    if (!Page.IsPostBack)
       {
        // Your code for databind...
       }
    }
    

    希望您理解并为您工作..

    【讨论】:

      【解决方案3】:

      启用 false 阻止它发布最新值。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-06
        • 1970-01-01
        • 1970-01-01
        • 2012-02-24
        相关资源
        最近更新 更多