我有一个包含3个用户控件的asp.net页面。 3个用户控件有一个jQueryUI-datepicker。
加载我的页面时,其中一个控件是可见的,另外两个不是。
当我在下拉列表中选择不同的值时,会显示相应的用户控件。
问题是我的日期选择器无法正常工作。
datepicker的代码:
$(function () {
$("#txtCiStartDateF").datepicker();
$(".needs-bdatepicker").datepicker({
changeMonth: true,
changeYear: true,
dateFormat: 'dd-M-yy',
altFormat: 'yy-M-dd',
minDate: '+5d'
});
});
<tr runat="server">
<td><asp:Label ID="FromDateLabel" runat="server">From date:</asp:Label></td>
<td>
<input type="text" id="txtCiStartDateF" runat="server" class="needs-bdatepicker"/>
<asp:TextBox id="txtCiStartDate" CssClass="hidden" runat="server" />
</td>
</tr>
相同的代码在其他控件上,但具有不同的控件ID。
在控件之间切换的代码:
Private Sub HideAllUserControls()
ChangeFrequency.Visible = False
ChangeOpeningHours.Visible = False
ChangeCiNumber.Visible = False
End Sub
Protected Sub TicketSubTypeSelected(ByVal sender As System.Object, ByVal e As EventArgs) Handles TicketSubTypeDropDownList.SelectedIndexChanged
HideAllUserControls()
Select Case TicketSubTypeDropDownList.SelectedItem.Value
Case TicketSubType.ChangeFrequency
TransportTypeRow.Visible = True
ChangeFrequency.CiNumber = CINumberTextBox.Text
ChangeFrequency.CustomerCode = CustomerCodeDropDownList.SelectedItem.Text
ChangeFrequency.Visible = True
Case TicketSubType.ChangeOpeningHours
TransportTypeRow.Visible = True
ChangeOpeningHours.CiNumber = CINumberTextBox.Text
ChangeOpeningHours.CustomerCode = CustomerCodeDropDownList.SelectedItem.Text
ChangeOpeningHours.Visible = True
Case TicketSubType.ChangeCiNumber
TransportTypeRow.Visible = False
ChangeCiNumber.CiNumber = CINumberTextBox.Text
ChangeCiNumber.CustomerCode = CustomerCodeDropDownList.SelectedItem.Text
ChangeCiNumber.Visible = True
Case Else
End Select
End Sub
当我点击文本框时,没有显示日期选择器。 当我从下拉列表中选择不同的值之前单击文本框时,datepicker打开就好了。 当我从下拉列表中选择一个不同的值时,我没有得到日期选择器。
更新:当我第一次进入页面时,datepicker工作正常。我注意到我的控件有“hasDatepicker”类。当我从下拉列表中选择不同的值时,控件不再具有“hasDatepicker”类。 任何人都可以帮助我吗?
答案 0 :(得分:0)
您在同一元素上调用var templateName = "name";
var indexNameTemplate = "te*";
var response = client.PutTemplate(templateName, t => t
.Template(indexNameTemplate)
.AddMapping<>(...);
两次。根据您的代码,第二个文本框甚至不是一个日期选择器。
添加.datepicker()
答案 1 :(得分:0)
您的控件可能嵌套在另一个容器控件中。在这种情况下,页面上呈现的ID(即服务器端的ClientId
属性)可能与服务器端控件ID不同。容器控件ID将与它连接。
所以不要依赖JavaScript代码中的控件ID。使用方法通过其他方式获得该控件的引用。
由于您使用的是jQuery,因此一种方法是查看ID的结尾。例如像这样$("input[id$=txtCiStartDateF]")
。这将选择ID以txtCiStartDateF结尾的所有控件,并且基本上可以控制您的兴趣。
还有其他方法可以选择控件,但我希望你明白这一点。
答案 2 :(得分:0)
我找到了解决方案。 在每个用户控件中,我重复代码来设置我的datepicker。 我已将其从我的usercontrols移动到包含页面。 现在一切正常。