使用javascript访问网格内的文本框

时间:2017-09-04 16:31:54

标签: javascript asp.net gridview

我在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。

提前致谢。

1 个答案:

答案 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"));
});