не удалось привязать datepicker к edititemtemplate в detailview

У меня есть следующий шаблон в моем подробном представлении, чтобы изменить дату:

<EditItemTemplate>
                        <asp:TextBox id="EndDate" class="datefield" text='<%# Bind("EndDate")%>' runat="server"/>
                    </EditItemTemplate>

И я перехожу в режим редактирования с помощью кнопки со следующим кодом:

protected void Edit_Assignment(object sender, EventArgs e) {

            if (_gvAssignments.CurrentMode != DetailsViewMode.Edit) {
                _gvAssignments.ChangeMode(DetailsViewMode.Edit);
            }


        }

У меня также есть готовый документ и функция onclientclick для вызова datepicker.

$(document).ready(function() {
            $("#tabs").tabs();
            $(".datefield").datepicker();
            $("#StartDate").datepicker();
            $("#EndDate").datepicker();
        });

        function updateDatepickFields() {
            alert("Button clicked");
            $(".datefield").datepicker();
            $("#StartDate").datepicker();
            $("#EndDate").datepicker();
        };
        $(".datefield").on("focus",function() {
            $(".datefield").datepicker();
        });

однако, похоже, это не похоже на привязку даты, независимо от того, какой код я использую.

jquery,asp.net,datepicker,detailsview,

0

Ответов: 1


0 принят

Щелкните правой кнопкой мыши свою страницу в браузере, сделайте элемент Inspect и найдите свой EndDateэлемент. Вы заметите, что его идентификатор выглядит как нечто совершенно другое! Это связано с тем, что ASP.Net переименует элементы управления на стороне сервера, чтобы избежать конфликтов идентичности.

Имея это в виду, вы можете начать понимать проблему - ссылки $('#EndDate')в JQuery не будут работать, потому что нет элемента с этим идентификатором.

Самый простой вариант - добавить ClientIDMode="static"свойство в свои текстовые поля:

<asp:Textbox runat="server" ClientIdMode="static" ID="EndDate">

Это заставляет элемент визуализировать с данным идентификатором вместо того, чтобы «перезаписываться». Затем вы можете получить доступ к этим элементам так же, как обычно, и быть на своем весерном пути.


Если у вас есть что-то вроде <asp:Repeater>или <asp:GridView>, избегайте этого метода. Поскольку элементы повторяются, это приведет к дублированию идентификаторов. В таком случае, использовать ClientIdMode="Predictable", что сделает ваши детали как - то больше нравится EndDate_0, EndDate_1и так далее.

JQuery, asp.net, DatePicker, DetailsView,
Похожие вопросы