vertical tabla inmovilizar horizontal filas fijo fijar fija encabezado con columnas columna asp.net javascript internet-explorer cross-browser readonly

asp.net - horizontal - inmovilizar filas y columnas tabla html jquery



Comportamiento extraño usando HTML ''readonly="readonly"'' vs. JavaScript ''element.readOnly=true;'' (2)

Esto es por diseño. Como una característica de seguridad de ASP.NET, establecerlo de solo lectura en el servidor lo mantendrá de forma legible independientemente de lo que ocurra en el cliente. Si desea que puedan anularlo y enviar un valor, entonces no es realmente de solo lectura en el servidor, solo de forma condicional en el cliente. Puede hacer una devolución de datos cuando marque la casilla de verificación para cambiar el atributo de solo lectura en el servidor o establecer solo el atributo de solo lectura en el cliente utilizando este código ASP.NET:

MyControl.Attributes.Add("readOnly","readOnly")

Algunos antecedentes

Así que estaba terminando algunas mejoras en una aplicación web que realiza una interpolación automática de datos. Hay un puñado de cuadros de texto que el usuario rellena, y otros cuadros de texto entre ellos tienen valores calculados automáticamente. Los cuadros de texto que reciben valores calculados automáticamente solo deben leerse para evitar cambios del usuario, pero no se pueden deshabilitar o no se enviarán en la devolución de datos. Cada uno de estos cuadros de texto también tiene una casilla de verificación junto a él para que el usuario pueda verificarlo conscientemente para que el campo pueda escribirse y así poder anular el valor interpolado.

El navegador: IE 7 (no estoy seguro de cómo se comporta esto en los demás)

La cuestión

Al establecer la propiedad readOnly los readOnly de texto con JavaScript, el valor en el cuadro de texto se envía con el formulario: Puedo verlo en el lado del servidor (ASP.NET) con myTextBox.Text y está en Request.Form("myTextBox") .

Si configuro ReadOnly="true" en mi elemento <asp:TextBox /> y no uso el método JavaScript, el valor en el cuadro de texto NO está disponible en myTextBox.Text (supongo que nunca llegó al ViewState ) , pero se envía con el formulario: Request.Form("myTextBox") tiene un valor.

Mis preguntas)

¿Qué diablos está pasando? ¿Esto es por diseño? ¿Es este un problema del navegador? ¿Encontré un error? Es molesto tener que tener un poco de JavaScript adicional para desactivar inicialmente la capacidad de escritura de los cuadros de texto cuando se carga la página para que mi aplicación funcione.

¡Gracias!


De acuerdo, modifiqué mi muestra y creo que veo el problema, y ​​podría estar equivocado, pero creo que se está comportando como debería.

Cuando configura un campo para que sea ReadOnly en el código subyacente, ASP:TextBox parece volverse inmutable incluso con JS. Hice un cambio y el cambio se reflejó en JS y en la forma, pero el TextBox retuvo su valor de texto original, a menos que yo mirara en la Solicitud. Forma como lo hiciste

No creo que esto sea un error. Creo que es intencional, para mantener algo completamente bloqueado, solo por el lado del servidor colgando parece una opción preferida.

¿Puedo sugerir algo utilizando espacios de entrada y trazos ocultos o ASP:Labels (que efectivamente se representan como tramos) para dar un aspecto de visualización que el usuario no puede ajustar?

Alternativamente, si tiene acceso a una biblioteca JS (como jQuery), puede establecer una clase CSS en sus TextBoxes (con CssClass="readonly" o algo así en su etiqueta), luego use el proceso de selección para modificar el atributo , como tal (suponiendo jQuery, escrito fácilmente en otros idiomas):

$("input.readonly").attr("readonly","readonly");

De esta forma, no está reescribiendo gran parte de su marcado y es una solución rápida de JS.