¿Cómo puedo acceder a un servidor runat de control HTML desde javascript?

Tengo el siguiente código:

<telerik:GridTemplateColumn DataField="JOB_CODE" 
<EditItemTemplate> 
<input type="text" ID="JOB_CODETextBox" runat="server" 
 value='<%# Eval("JOB_CODE") %>' readonly="readonly" 
 onclick="$('#basic-modal-content').modal({
                                          appendTo:'form', persist: true,
                                          onClose: function (dialog) 
                                                   {
                                                      /*
           I want to assign here a value to the textbox control
           like this: JOB_CODETextBox = 'something...'
           I tried this: 
           $find('<%= JOB_CODETextBox.ClientID %>').value = 'something..'
           but it didn't work!! the find function returns [null]
                                                      */
                                                      $.modal.close();
                                                   }
                                         } );" />

¡¡Alguna ayuda!!

preguntado el 09 de enero de 11 a las 11:01

Es el telerik:GridTemplateColumn parte de otro control? ¿Cómo se ve el html renderizado? -

2 Respuestas

Esto debería funcionar:

$('#'+'<%= JOB_CODETextBox.ClientID %>').val('something');

o (solo C #):

$('<%= "#" + JOB_CODETextBox.ClientID %>').val('something');

o usando JavaScript / ECMAScript:

document.getElementById('<%= JOB_CODETextBox.ClientID %>').value = 'something';

contestado el 25 de mayo de 11 a las 22:05

Gracias por la reproducción, pero el enlace (<% = JOB_CODETextBox.ClientID%>) no funciona, todavía me da el mismo valor en javascript, no lo reemplazó con la identificación real del cliente, ¡alguna idea! - Casa

No estoy familiarizado con el control telerik que está utilizando, así que voy a asumir que es similar a otros controles vinculados a datos. Operando con eso en mente, aquí hay un ejemplo usando un Repeater controlar.

aquí está el marcado

  <asp:Repeater ID="rpt1" runat="server">
    <ItemTemplate>
      <input type="text" id="JOB_CODETextBox" runat="server" />
    </ItemTemplate>
  </asp:Repeater>

en esta situación, generalmente genero el lado del servidor javascript.

System.Text.StringBuilder js = new StringBuilder();

js.AppendLine("  <script>");

// we'll store all the control references in a list 
// since there will be one for each item in the repeater
js.AppendLine("    var JOB_CODETextBox_list = [];"); 

for (int j = 0; j < this.rpt1.Items.Count; j++)
{
    System.Web.UI.HtmlControls.HtmlGenericControl JOB_CODETextBox;

    // try to locate the copy of the control local to each item
    JOB_CODETextBox = (HtmlGenericControl)this.rpt1.Items[j].FindControl("JOB_CODETextBox");

    if (JOB_CODETextBox != null) // make sure you found something
    {
        js.AppendFormat("JOB_CODETextBox_list.push(document.getElementById('{0}'));", JOB_CODETextBox.ClientID);
        js.AppendLine();
    }
}
js.AppendLine("  </script>");

this.Page.ClientScript.RegisterStartupScript(typeof(Page), "JOB_CODE", js.ToString(), false);

que debería generar una secuencia de comandos que obtenga una referencia a todas las instancias de ese control de entrada dentro del Repetidor. después de que se ejecute, puede acceder a los elementos del lado del cliente como

    JOB_CODETextBox_list[n].value = 'something';

Respondido el 31 de enero de 12 a las 18:01

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.