2013-05-03 2 views
1

I.ve проблема с jquery datepicker. Вот tehe кодJquery datepicker написать в другом текстовом поле

<asp:GridView ID="CompIncGridView1" runat="server" AllowPaging="True" AllowSorting="True" 
        AutoGenerateColumns="False" DataKeyNames="D_id" ClientIDMode="Static" > 
        <Columns> 
         <asp:TemplateField HeaderText="Data idoneità"> 
          <EditItemTemplate> 
          </EditItemTemplate> 
          <ItemTemplate> 
           <asp:TextBox CssClass="DatePick" ID="ComplyDateTB1" runat="server" Text='<%# Bind("ComplyDate", "{0:d}") %>'></asp:TextBox> 
          </ItemTemplate> 
         </asp:TemplateField> 

        </Columns> 
       </asp:GridView> 

и это код JQuery

$(document).ready(function() { 
      $(".DatePick").datepicker($.datepicker.regional['it']); 
}); 

Проблема в том, что, когда я нажимаю на любом текстовом поле, отображается календарь, но когда я выбираю день, дата пишется только в первом текстовом поле таблицы.

спасибо

+0

Где вы ожидаете дату для написано? – Aristos

+0

@ Aristos в текстовом поле, где я нажал – Bruno

+0

Какой datepicker вы используете? (один из jQuery UI - или другой?) – Aristos

ответ

0

Прежде всего I reproduce your error here, базы на jQuery Datepicker tutorial.

Проблема возникает , потому что на вашем GridView все элементы управления текстом имеют одинаковые идентификаторы. Одно простое решение для удаления, что ид, и пусть asp.net добавить их автоматически и ваша проблема исчезнет, ​​как вы видите на этом последнем тесте: http://jsfiddle.net/B7EGj/1/ и код из рабочей страницы:

<p>Date: <input type="text" class="dp" /></p> 
<p>Date: <input type="text" class="dp" /></p> 
<p>Date: <input type="text" class="dp" /></p> 
<p>Date: <input type="text" class="dp" /></p> 
<p>Date: <input type="text" class="dp" /></p> 

<script> 
$(function() { 
    $(".dp").datepicker(); 
    }); 
</script> 

Нормально все идентификаторы на элементах управления должны быть уникальными, поэтому я не уверен, что дампикер ошибается или нет, что ведет к тому, что идентификатор элемента управления открывается и добавляет дату, но в то же время открывает базу на обработчике. С другой стороны, asp.net, когда вы используете шаблон внутри ретранслятора, например GridView, для добавления TextBoxes и по каким-либо причинам не может автоматически предоставлять разные идентификаторы текстовым полям, и каждый имеет одинаковый идентификатор.

Вот код, который sould GridView должен сделать, чтобы избежать этой проблемы: http://jsfiddle.net/B7EGj/2/ (со всеми идентификаторами Diferent)

3

Вы используете селектор классов. Попробуйте использовать уникальный селектор id. что-то вроде этого

$(document).ready(function() { 
      $('#<%= ComplyDateTB1.ClientID %>').datepicker($.datepicker.regional['it']); 
}); 
+0

глупый asp.net и способ обработки HTML, +1 – abc123

+1

tankyou для ответа, но текстовое поле isinside gridview и в случае thius ' # <% = ComplyDateTB1.ClientID%> 'не работает – Bruno