获取ajax日历扩展程序控件的选定日期

时间:2011-09-06 05:36:45

标签: asp.net ajax asp.net-ajax ajaxcontroltoolkit

我在asp.net 3.5应用程序中使用了Ajax Calendar扩展程序控件(来自here)。

我的问题:如何从代码隐藏文件中的Ajax日历扩展程序控件中获取所选日期?

比如说我从日历中选择01/01/2011,然后我需要在代码后面显示这个日期,因为我需要检查空值。

让我知道任何疑问。

请指导。谢谢!

问题已更新为代码

 &nbsp; <asp:Label ID="lblStartDate" runat="server" Text="<%$ Resources:Resource, lblStartDate %>" CssClass="boldlabelText"></asp:Label>
                                        &nbsp;<asp:TextBox ID="txtStartDate" runat="server" ReadOnly="true" MaxLength="10"></asp:TextBox>
                                        <asp:ImageButton runat="Server" ID="imgStartDate" ImageUrl="~/Images/Calender.png" AlternateText="Click to show calendar" />
                                        <ajax:CalendarExtender ID="CalStartDate" runat="server" TargetControlID="txtStartDate" Format="yyyy-MM-dd" PopupButtonID="imgStartDate">
                                        </ajax:CalendarExtender>

Code-Behind(.cs)

if (txtStartDate.Text.Equals(string.Empty))  // The text value always comes null
        {
            lblStartDateM.Visible = true; 
            txtStartDate.BackColor = Color.FromArgb(255, 255, 235);
            blnIsValid = false;
        }

5 个答案:

答案 0 :(得分:4)

不要在TextBox上设置属性 ReadOnly =“true”

来自Joteke's Blog

  

如果TextBox的ReadOnly属性为“true”,则不会回发数据   例如,它实际上意味着TextBox是只读的   服务器端的立场(客户端更改将被忽略)。如果你   希望TB以“旧方式”使用

只读
TextBox1.Attributes.Add("readonly","readonly") 
     

因为这不会影响服务器端功能。

答案 1 :(得分:4)

您还可以通过Request.Form集合访问ReadOnly文本框内容:

的Request.Form [txtStartDate.UniqueID]

具有相同的效果

txtStartDate.text

参考:http://www.aspsnippets.com/Articles/ASP.Net-AJAX-CalendarExtender---Get-selected-date-from-ReadOnly-TextBox.aspx

答案 2 :(得分:1)

试试这段代码。我在我的网站上使用了这段代码并且工作正常。在按钮单击事件上,我可以使用textbox的.text属性获取在文本框中输入的日期值。

<asp:TextBox ID="txtDateFrom" runat="server" Width="70px"></asp:TextBox>
<ajax:CalendarExtender ID="CalendarExtender1" runat="server" CssClass="MyCalendar" Format="MM/dd/yyyy" TargetControlID="txtDateFrom" Enabled="True"></ajax:CalendarExtender>

<ajax:MaskedEditExtender ID="MaskedEditExtender1" runat="server" AcceptNegative="Left" DisplayMoney="Left" ErrorTooltipEnabled="True" InputDirection="RightToLeft" Mask="99/99/9999" MaskType="Date" TargetControlID="txtTranDateFrom" CultureAMPMPlaceholder="" CultureCurrencySymbolPlaceholder="" CultureDateFormat="" CultureDatePlaceholder="" CultureDecimalPlaceholder="" CultureThousandsPlaceholder="" CultureTimePlaceholder="" Enabled="True"></ajax:MaskedEditExtender>

答案 3 :(得分:0)

使用文本框中由calenderextender

“扩展”的文本属性

答案 4 :(得分:0)

不幸的是,如果intellisense没有检测到文本框或者嵌入GridView中的文本框,那么在Page_Load()事件的文本框控件中设置ReadOnly属性是没用的。

为了避免所有这些头痛,我只需将TextBox控件转换为&#34; psuedo&#34;标签控件,仍然可以在&#34;标签&#34;

上使用AjaxControlToolKit CalendarExtender

onKeyPress = "javascript: return false;" onPaste = "javascript: return false;"放入文本框中。这样,即使启用了文本框,用户也无法修改数据,并且您强制他们使用Calendar控件,这实际上就是您想要的。我们不应该让用户输入日期。