提问人:Ann 提问时间:4/14/2023 更新时间:4/14/2023 访问量:73
Listview (asp.net) 中的 Datepicker(Jquery),代码隐藏 (vb.net)
Datepicker(Jquery) in Listview (asp.net), Code Behind(vb.net)
问:
我在列表视图中有一个文本框,它接收来自DatePicker(Jquery)的输入。现在,我必须验证该文本框中的日期/输入。 我的代码的逻辑是这样的: 用户将通过单选按钮选择购买哪一个。 如果用户选择 [Mango],则会出现日期的文本框以及 datepicker jquery 的日历图标。现在,用户将选择[生效日期]的日期。Datepicker 完美地做到了这一点,但我不知道如何验证用户是否选择了正确的日期,因为它应该在数据库提供的日期范围内。例如,芒果季节,生效日期应该只从 2023 年 5 月开始,如果用户选择 2023 年 4 月 13 日,则会触发警告,提示她应该选择另一个日期。
我以为我在文本框更改其值时尝试过,但这只有在用户单击键盘上的回车键时才会触发。一旦日期选择器在文本框中输入值,我需要验证输入。请问我该怎么做?我在代码隐藏上使用 vb.net。
部分标记:
<td valign="middle" style="white-space: nowrap; text-align:center;">
<%# CheckNull(Eval("EFF_DATE"))%>
<ASP:Textbox runat="server" ID="dtEffectiveDate" CssClass="dateSelector"
MonitorChanges="true"
OnTextChanged="dtEffectiveDate_TextChanged" />
</td>
部分脚本:
$("<%=listView.ClientID %> tr").each(function () {
$('.dateSelector').datepicker();
});
答:
不是 100% 清楚为什么你不只使用 TextMode=“date”(你不需要 jQuery 日期选择器)。
但是,这是任何文本框吗?
您可以添加/拥有/设置 ontextchanged 事件。但是,要让它在更改时“自动”触发?您需要添加以下内容:
<asp:Textbox runat="server" ID="dtEffectiveDate"
CssClass="dateSelector"
MonitorChanges="true"
OnTextChanged="dtEffectiveDate_TextChanged"
AutoPostBack="true"
/>
我也不知道这里的“MonitorChanges”是什么???
因此,上述代码的隐藏现在可以是:
Protected Sub dtEffectiveDate_TextChanged(sender As Object, e As EventArgs)
Dim dtEffctive As TextBox = sender
Dim lvRow As ListViewItem = dtEffctive.NamingContainer
Dim txtTree As Label = lvRow.FindControl("lblTree")
' code here to get the data in question
End Sub
因此,上面显示了如何拾取当前行 - 从当前行中获取触发 changed 事件的其他控件值。
但是,您将需要 autopostback = true,这对于您想要“回发”页面的任何文本框都是必需的。
如果您不回发页面(使用 autopost-back = true),则在提交时将触发 ontext changed 事件,但这可能不是您要查找的。
因此,要触发文本框的事件,与按钮不同,您必须将 autopostback = “true” 添加到文本框中。
评论