2016-10-13 2 views
0

У меня есть следующий шаблон в моем DetailsView редактировать дата:не удалось связать DatePicker с EditItemTemplate в DetailsView

<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(); 
     }); 

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

ответ

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 и так далее.

+0

Первый метод работал для меня, хотя мне пришлось подстроить его до функции mouseover на вкладке, в которой находился элемент управления (выполнение этой функции через функцию document.ready() не сработало, и также не использовало clientclick кнопки asp. –