2011-06-08 30 views
0

希望有人能帮助我,我一直在挣扎几天。从gridview编辑模式获取控件的ID以供Javascript使用

基本上需要发生的事情是,当用户点击编辑到gridview并点击某个文本框时,javascript日历会弹出并且用户选择一个日期。

到目前为止,我可以静态设置它,日历适用于这一行,但不适用于ID更改后的其他行。

我的ASP代码(文本框的ID已被设置为txtStartDate):

包含日历

$("#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); 

这工作,对于一个文本框

<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函数。它不适用于其他因为'ct102'随着每一行而改变。

+2

** **喔。不要*硬编码你的名字。如果需要,将控件的客户端id行为设置为常量,但不要硬编码由ASP.NET呈现的控件名称。 – 2011-06-08 16:09:16

+0

为什么有特定的原因?我做了另一个控制,我需要在编辑模式下拉列表,并工作正常 – George 2011-06-08 16:31:12

回答

1

你不能给你的TextBoxes一个类,然后使用类选择器来分配datepicker吗?

例如为:

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

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

哇,这很容易,非常感谢,很好地工作。 – George 2011-06-08 16:30:17

相关问题