我在gridView中有一个标签和多个文本框以及一个按钮,我需要在单击该按钮时访问这些文本框,这是我的代码看起来像..
<asp:GridView id="grdEventProfile" runat="server" >
<Columns>
<asp:BoundField DataField="EventID" SortExpression="EventID" HeaderText="Event ID"></asp:BoundField>
<asp:TemplateField>
<EditItemTemplate>
<asp:TextBox id="txtEventDate" runat="server" Text='<%# Bind("EventRecognitionDate") %>' ></asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:Label id="Label4" runat="server" "Text='<%# Bind("EventRecognitionDate") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<EditItemTemplate>
<asp:TextBox id="txtTaskDueDate" Text='<%# Bind("TaskDueDate") %>' ></asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:Label id="Label2" runat="server" Text='<%# Bind("TaskDueDate") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<asp:Button id="btnEdit" runat="server" Text="EDT" OnClientClick = "AllowEdit()" ></asp:Button>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
在我的JavaScript函数AllowEdit()中,我希望能够做到这样的事情
if ( EventID == 01 && txtEventDate.value == 0 )
txtTaskDueDate.Enabled = False;
我无法通过document.getElementByID访问我的文本框或标签,因为它们放在网格中。
我也试过这种方法:
var grid = document.getElementById('<%=grdEventProfile.ClientID%>');
var elements = grid.getElementsByTagName("input");
但事实证明它只适用于(onChange)属性,但不适用于onClientClick。
提前致谢。
答案 0 :(得分:0)
GridView具有行,因此您需要先指定正确的行号,然后才能访问TextBox。
var value = document.getElementById('<%= grdEventProfile.Rows[i].FindControl("TextBox1").ClientID %>').value;
或者将它们全部循环并获得正确的结果。
$('#<%= grdEventProfile.ClientID %> input[type="text"]').each(function () {
alert($(this).attr("ID"));
});