Получение идентификатора элемента управления из режима редактирования gridview для использования Javascript

#javascript #vb.net #gridview

#javascript #vb.net #gridview

Вопрос:

надеюсь, кто-нибудь сможет мне помочь, я боролся пару дней.

В принципе, что должно произойти, так это когда пользователь нажимает редактировать в gridview и нажимает на определенное текстовое поле, появляется календарь javascript, и пользователь выбирает дату.

Пока я могу установить его статически, и календарь работает для этой одной строки, но не для других строк, поскольку идентификатор меняется.

Мой ASP-код (идентификатор текстового поля был установлен в txtStartDate):

 <asp:TemplateField SortExpression="StartDate" HeaderText="Start Date">
            <EditItemTemplate>
             <asp:TextBox ID="txtStartDate" onClick="ddlchange()" Runat="server" Text='<%#Bind("StartDate")%>'> 

                </asp:TextBox>         
            </EditItemTemplate>

            <ItemTemplate>
                <asp:Label ID="label1" runat="server" Text='<%#Bind("StartDate")%>'></asp:Label>                   
            </ItemTemplate>

            </asp:TemplateField>
  

Функция Javascript, содержащая календарь

 $("#ctl00_cphMain_GridView1_ctl02_txtStartDate").datepicker({ changeMonth: true });
//getter
var changeMonth = $("#ctl00_cphMain_GridView1_ctl02_txtStartDate").datepicker("option", "changeMonth");
//setter
$("#ctl00_cphMain_GridView1_ctl02_txtStartDate").datepicker("option", "changeMonth", true);

$("#ctl00_cphMain_GridView1_ctl02_txtStartDate").datepicker({ changeYear: true });
//getter
var changeYear = $("#ctl00_cphMain_GridView1_ctl02_txtStartDate").datepicker("option", "changeYear");
//setter
$("#ctl00_cphMain_GridView1_ctl02_txtStartDate").datepicker("option", "changeYear", true);
  

Это работает для одного текстового поля. Это не работает для других, поскольку ‘ct102’ изменяется с каждой строкой.

Комментарии:

1. Вау . Не закодируйте свои имена подобным образом. При необходимости установите поведение идентификатора клиента для ваших элементов управления постоянным, но не закодируйте жестко имена элементов управления, отображаемые ASP.NET.

2. Есть ли конкретная причина для этого? Я сделал это для другого элемента управления, где мне требуется выпадающий список в режиме редактирования, и он отлично работает

Ответ №1:

Разве вы не можете присвоить своим текстовым полям класс, а затем использовать селектор класса для назначения datepicker?

например:

 <asp:TextBox ID="txtStartDate" onClick="ddlchange()" Runat="server" 
             Text='<%#Bind("StartDate")%>' CssClass="dateTextBox">

$(".dateTextBox").datepicker("option", "changeMonth", true);