我在asp.net 3.5应用程序中使用了Ajax Calendar扩展程序控件(来自here)。
我的问题:如何从代码隐藏文件中的Ajax日历扩展程序控件中获取所选日期?
比如说我从日历中选择01/01/2011,然后我需要在代码后面显示这个日期,因为我需要检查空值。
让我知道任何疑问。
请指导。谢谢!
问题已更新为代码
<asp:Label ID="lblStartDate" runat="server" Text="<%$ Resources:Resource, lblStartDate %>" CssClass="boldlabelText"></asp:Label>
<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;
}
答案 0 :(得分:4)
不要在TextBox上设置属性 ReadOnly =“true”。
如果TextBox的ReadOnly属性为“true”,则不会回发数据 例如,它实际上意味着TextBox是只读的 服务器端的立场(客户端更改将被忽略)。如果你 希望TB以“旧方式”使用
只读TextBox1.Attributes.Add("readonly","readonly")
因为这不会影响服务器端功能。
答案 1 :(得分:4)
您还可以通过Request.Form集合访问ReadOnly文本框内容:
的Request.Form [txtStartDate.UniqueID]
与
具有相同的效果txtStartDate.text
答案 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控件,这实际上就是您想要的。我们不应该让用户输入日期。