Ajax Toolkit Calendar Extender,在选择后弹出两次

时间:2017-03-23 09:01:53

标签: asp.net vb.net calendar ajaxcontroltoolkit calendarextender

我有一个非常奇怪的问题。我正在使用Ajax Toolkit Calendar Extender。我有更新面板 - > ListView - > TextBox(AutoPostBack =是)。 如果我输入框,它将更新到db,然后使用updatepanel.update()后面的代码执行更新面板。这很好用。所以我想把日历放在文本字段中,所以我使用Ajax Calendar Extender并调用文本框的目标控件ID,当我在那里时,我单击文本框和日历弹出然后我选择日期和文本框更改为新日期然后更新到db然后回发,但问题是在回发后日历再次弹出。在第一次选择日期后,我需要一种隐藏该死日历的方法。

<asp:TextBox ID="txtDespatchDate" runat="server" CssClass="tblDespContTxtLst" Text='<%# Eval("DescDespatchDate") %>' Width="70px" AutoPostBack="True" OnTextChanged="updDespatchLine" AutoComplete="Off" />

<ajaxToolkit:CalendarExtender ID="calDespatchDate" runat="server" CssClass="Calendar" Format="dd/MM/yyyy" PopupPosition="BottomLeft" TargetControlID="txtDespatchDate"  />

1 个答案:

答案 0 :(得分:0)

我很久以前就知道了这个问题,并且在服务器和所有的回发中我都无法使用ajax扩展器来解决它,所以我必须使用JQuery,我做了类似的事情;

背后的代码

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
   ScriptManager.RegisterStartupScript(NameOfUpdatePanel, Me.GetType, "SuperCalendar", "$( function() {
      $('.Calendar').datepicker({ dateFormat: 'dd/mm/yy'}); } );", True)
End Sub

ASP页面

<asp:UpdatePanel ID="NameOfUpdatePanel" runat="server" UpdateMode="Conditional">
   <ContentTemplate>
      <asp:TextBox ID="txtBox1" runat="server" CssClass="Calendar" />
   </ContentTemplate>
</asp:UpdatePanel>

您需要将最新的JQuery标题添加到页面顶部,如;

<script src="../Scripts/jquery-ui-1.8.21.custom.min.js" type="text/javascript"></script>

所有你需要做的就是每次你想要一个日期弹出窗口,你只需要将日历类添加到它;

CssClass="SomeTextBoxClass Calendar"

我在回发后不再出现任何问题,它再次弹出。