Saludos a tod@s!
Tengo un datagrid al que le he añadido un textbox en una columna de la siguiente forma:
Código:
<asp:TemplateColumn>
<ItemTemplate>
<asp:TextBox id="txtCant" cssClass="txtCant" MaxLength="2" runat="server"></asp:TextBox>
</ItemTemplate>
</asp:TemplateColumn>
Por otro lado, con javascript, intento acceder a ese textbox al pulsar sobre una imagen que también tengo en el datagrid. Para ello en ItemDataBound tengo:
Código:
Dim txtCant As TextBox = CType(e.Item.Cells(4).FindControl("txtCant"), TextBox)
Dim txtCantId As String = txtCant.UniqueID
...
imgMenos.Attributes.Add("onClick", "decrementar('" & txtCantId & "')")
El problema está en que txtCant.UniqueID me devuelve valores del tipo:
GridArticulos:_ctl2:txtCant, GridArticulos:_ctl3:txtCant, GridArticulos:_ctl4:txtCant, ...
Y sin embargo el identificador que tiene el textbox en el HTML es del tipo:
GridArticulos__ctl2_txtCant, GridArticulos__ctl3_txtCant, GridArticulos__ctl4_txtCant,... (lo mismo pero cambiando los ":" por "_")
Es decir, en el HTML tengo algo así:
Código:
<input name="GridArticulos:_ctl2:txtCant" type="text" maxlength="2" id="GridArticulos__ctl2_txtCant" class="txtCant" />
Así que cuando intento acceder a ese textbox con javascript mediante
document.getElementById(GridArticulos:_ctl2:txtCan t) no funciona.
Sé que se podría solucionar simplemente remplazando los ":" por "_", pero me extraña mucho el problema y me gustaría saber que es lo que estoy haciendo mal.
Muchas gracias a todos. Un saludo.