Я уже некоторое время использую средство выбора даты jQuery, и это здорово.тем не менее, теперь я использую его в пользовательском элементе управления и не могу заставить его работать с ошибкой:
Объект не поддерживает это свойство или метод при создании средства выбора даты.
Моя структура сайта выглядит следующим образом:
[Root]
- [Pages]
- MasterPage.Master
- GoodsReceived.aspx
- [WebControls]
- [PageControls]
- PopupBatchEntry.ascx
Я добавил jQuery на главную страницу примерно так:
<link href="../App_Themes/Default/Style.css" rel="stylesheet" type="text/css" />
<link href="../JavaScripts/jquery-ui.css" rel="stylesheet" type="text/css" />
<script src="../JavaScripts/jquery.min.js" type="text/javascript"></script>
<script src="../JavaScripts/jquery-ui.min.js" type="text/javascript"></script>
Я добавил jQuery в пользовательский элемент управления, например:итак:
<script src="../../JavaScripts/jquery.min.js" type="text/javascript"></script>
<script src="../../JavaScripts/jquery-ui.min.js" type="text/javascript"></script>
Текстовые поля, в которые я пытаюсь включить средства выбора даты, находятся в пользовательском элементе управления внутри gridview (css class: datePicker)
<asp:GridView ID="gvBatchDetails" runat="server" AutoGenerateColumns="False" EnableModelValidation="True">
<Columns>
<asp:TemplateField HeaderText="Use By">
<EditItemTemplate>
<asp:TextBox ID="txtUseBy" runat="server" Text='<%# Bind("UseBy", "{0:dd/MM/yyyy}") %>'
Width="80px" CssClass="datePicker"></asp:TextBox>
<%-- <cc1:CalendarExtender ID="txtUseBy_CalendarExtender" runat="server"
Enabled="True" Format="dd/MM/yyyy" TargetControlID="txtUseBy">
</cc1:CalendarExtender>--%>
<asp:RequiredFieldValidator ID="valSellByReq" runat="server" ControlToValidate="txtUseBy"
ErrorMessage="* Required" Display="Dynamic"></asp:RequiredFieldValidator>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Label3" runat="server" Text='<%# Bind("UseBy", "{0:dd/MM/yyyy}") %>'></asp:Label>
</ItemTemplate>
<HeaderStyle HorizontalAlign="Left" />
<ItemStyle HorizontalAlign="Left" />
</asp:TemplateField>
<asp:TemplateField HeaderText="Sell By">
<EditItemTemplate>
<asp:TextBox ID="txtSellBy" runat="server" Text='<%# Bind("SellBy", "{0:dd/MM/yyyy}") %>'
Width="80px" CssClass="datePicker"></asp:TextBox>
<%-- <cc1:CalendarExtender ID="txtSellBy_CalendarExtender" runat="server" Enabled="True"
Format="dd/MM/yyyy" TargetControlID="txtSellBy">
</cc1:CalendarExtender>--%>
<asp:RequiredFieldValidator ID="valSellByRequired" runat="server" ControlToValidate="txtSellBy"
ErrorMessage="* Required" Display="Dynamic"></asp:RequiredFieldValidator>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Label4" runat="server" Text='<%# Bind("SellBy", "{0:dd/MM/yyyy}") %>'></asp:Label>
</ItemTemplate>
<HeaderStyle HorizontalAlign="Left" />
<ItemStyle HorizontalAlign="Left" />
</asp:TemplateField>
<asp:TemplateField HeaderText="Quantity Delivered">
<EditItemTemplate>
<asp:TextBox ID="txtQuantityDelivered" runat="server" Text='<%# Bind("QuantityDelivered") %>'
Width="75px"></asp:TextBox>
<asp:RequiredFieldValidator ID="valQuantityRequired" runat="server" ControlToValidate="txtQuantityDelivered"
ErrorMessage="* Required" Display="Dynamic"></asp:RequiredFieldValidator>
<asp:RangeValidator ID="valQuantityRange" runat="server" ControlToValidate="txtQuantityDelivered"
ErrorMessage="* Invalid" MinimumValue="0" Type="Double" CultureInvariantValues="True"
Display="Dynamic"></asp:RangeValidator>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Label5" runat="server" Text='<%# Bind("QuantityDelivered") %>'></asp:Label>
</ItemTemplate>
<HeaderStyle HorizontalAlign="Right" />
<ItemStyle HorizontalAlign="Right" />
</asp:TemplateField>
<asp:TemplateField ShowHeader="False">
<EditItemTemplate>
<table class="BorderlessTable">
<tr>
<td>
<asp:Button ID="Button1" runat="server" CausesValidation="True" CommandName="Update"
Text="Update" />
</td>
<td>
<asp:Button ID="Button2" runat="server" CausesValidation="False" CommandName="Cancel"
Text="Cancel" />
</td>
</tr>
</table>
</EditItemTemplate>
<ItemTemplate>
<table class="BorderlessTable">
<tr>
<td>
<asp:Button ID="Button1" runat="server" CausesValidation="False" CommandName="Edit"
Text="Edit" />
</td>
<td>
<asp:Button ID="Button2" runat="server" CausesValidation="False" CommandName="Delete"
Text="Delete" />
</td>
</tr>
</table>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
И, наконец, jQuery imиспользуя, чтобы превратить текстовые поля в средства выбора даты (в пользовательском элементе управления):
//Configure dates when the page is loaded
$(document).ready(configureDates);
//Add handler toend request
var prm = Sys.WebForms.PageRequestManager.getInstance();
prm.add_endRequest(configureDates);
//Configure all date picker text boxes
function configureDates() {
var datePickers = $('.datePicker');
if ($(datePickers).length > 0) {
$(datePickers).datepicker({ dateFormat: "dd/mm/yy" }); <--- ERROR IS HERE
}
}
Кто-нибудь может увидеть, что с этим не так?Я думал, что это может быть связано с путями к файлам jQuery, в зависимости от того, находится ли текущий контекст в папке страниц или в папке веб-элементов управления.