Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

221
Vistas
Inserte UserControl después de cada TextArea en la página asp.net

He creado un UserControl llamado Autocorrección. Contiene una vista de cuadrícula y luego tengo 100 páginas en la aplicación, por lo que será difícil para mí agregar ese control de usuario para cada página.

He pensado en otra forma de hacerlo mediante jQuery/JavaScript.

Hasta ahora he escrito el siguiente script:

 $(document).ready(function () { let OldTextArea = document.querySelectorAll("textarea"); if (OldTextArea == null) return; for (let i = 0; i < OldTextArea.length; i++) { OldTextArea[i].appendChild(); // how I put UserControl in appendchild ? } });

Ahora estoy luchando por encontrar una manera de agregar el control de usuario de Autocorrección en el área de texto appendChild. ¿Puede alguien sugerir cómo puedo lograr esto?

Las siguientes son las propiedades que quiero establecer para UserControl:

 <uc1:AutoCorrect id=AutoCorrect runat=server ShowTimeOut=false ShowMenu=false> </uc1:AutoCorrect>

El siguiente script funciona bien y devuelve todas las entradas de textarea. Quiero agregar el control de usuario como hijo de esta área de texto.

 document.querySelectorAll('textarea').forEach((input) => {console.log(input.value);});

Intenté otra ruta de implementación de esto por

 $(document).ready(function () { //dom is ready let OldTextArea = document.querySelectorAll("textarea"); if (OldTextArea == null) return; const content = `<div id="myDropdown"> <asp:GridView ID="GridView1" HeaderStyle-BackColor="#3AC0F2" HeaderStyle-ForeColor="Red" runat="server" AutoGenerateColumns="false" OnDataBound="OnDataBound"> <Columns> <asp:BoundField DataField="Shortcode" HeaderText="Shortcode" ItemStyle-Width="30" /> <asp:BoundField DataField="ReplaceText" HeaderText="Replace Text" ItemStyle-Width="100" /> </Columns> </asp:GridView> </div>`;

En lugar de que Usercontrol lo cree sobre la marcha y lo agregue al área de texto como elemento secundario. Sin embargo, con esto obtengo el siguiente error:

Mensaje de error

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Entonces, en lugar de agregar el control de usuario, ¿va a agregar código a cada página? ¿Tararear? El problema es que js se ejecuta después de que la página se ha renderizado, y hay BOATLOAD de cableado automático de eventos, configuraciones y cosas como ViewState, etc. que deben cargarse, configurarse y renderizarse EXACTAMENTE correctamente MUCHO antes de que se pueda ejecutar cualquier código js .

Podría considerar intentar agregar desde el código anterior, pero incluso entonces, ¿qué sucede si agrega el control dos veces? Entonces, A MENUDO, todas las "ID" para cada instancia del control ahora también van a cambiar. Se convierte en un verdadero desastre. realmente rápido. El servidor agregará un previx y, a menudo, un sufijo al control. Entonces, intentarlo en el lado del cliente, ni siquiera se acercará al trabajo aquí.

Incluso podría ser mejor crear un control que tenga el área de texto y todo lo adicional. Entonces, ¿ahora solo encuentra el área de texto y la cambia al control de usuario?

Como se ha señalado, hay una gran cantidad de cosas que deben ocurrir correctamente para un control en el marcado posterior. Está preprocesado, convertido a HTML, pero se requiere el estado de vista, el código de evento y mucho más para que dichos controles funcionen. La página renderizada no tiene ni renderiza ese control, pero se convierte en HTML, y eso ocurre MUCHO antes de que la página llegue al lado del cliente.

Prueba esto:

Tome una sola página con ese control. Véalo en el navegador, y ahora presione f12 para las herramientas de depuración del navegador; mire el html generado; no se parecerá en nada a su marcado original.

Supongo que este requisito y ejemplo es una ventaja de usar un marco del lado del cliente, ya que es mucho más capaz de aceptar la inyección de tales controles, pero ya no serán controles asp.net.

He estado en esto durante algún tiempo, y aunque a menudo pienso que es convincente inyectar controles. Haciéndolo de la manera asp.net, es realmente raro, muy raro que se requiera este enfoque.

Me refiero a algún cuadro de texto emergente o asistente de edición. Probablemente haría un clic derecho, insertar y mostrar la lista de opciones, como tal, este tipo de interfaz de usuario se haría mucho mejor con un control del lado del cliente, no uno del lado del servidor de todos modos. Y luego, como la mayoría de los selectores de jQuery, etc., sí, con gran facilidad puede adjuntar una acción de interfaz de usuario a los cuadros de texto existentes, o lo que sea, y dicha selección se puede realizar por ID de control, o incluso por tipo de clase.

Sin embargo, es muy posible que pueda usar un cuadro de diálogo jQuery.UI. Pueden cargar otra página y mostrarla en un cuadro de diálogo. entonces, tal vez deje que el diálogo jquery.UI haga esta carga. Por lo tanto, si tiene 2 u 8 cuadros de texto que necesitan la ventana emergente de la interfaz de usuario, entonces tenga una rutina js y podría abrir el cuadro de diálogo con las selecciones. Entonces, aunque la mayoría de los diálogos de jQuery.UI son div, puede cargar una página web completa en ese div y, por lo tanto, mientras ESTÁ cargando en una segunda página, se ejecuta, se procesa y el diálogo jQuery.UI puede mostrar esa página.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda