visual varios texto solo lectura escritura escribir editable deshabilitar desactivar dejar como caja c# asp.net textbox postback readonly

varios - textbox no editable c#



¿Cómo mantener el texto de un cuadro de texto de solo lectura después de PostBack()? (7)

Aquí hay una forma de hacerlo con javascript en el evento onfocus del propio Textbox.

Hacerlo de esta manera con javascript tiene la ventaja de que no es necesario hacerlo en el código que está detrás, lo que puede ser difícil si necesita hacerlo en vista de malla o similar.

Este código javascript solo se prueba en Internet Explorer y algunas partes de él solo funcionarán en IE, como por ejemplo la parte createTextRange que está ahí solo para hacer que el caret termine al principio del texto en el cuadro de texto, pero esa parte puede ser omitido si no es necesario.

Si el núcleo de esta técnica funciona en otros navegadores, entonces debería ser posible hacer que el código sea compatible con el navegador. El núcleo de la idea aquí es el desenfoque después de establecer solo lectura y luego un tiempo de espera para volver a establecer el enfoque.

Si solo configura la opción de solo lectura, entonces no se volverá solo de lectura hasta la próxima vez que le dé al Foco de texto.

Y, por supuesto, el código se puede poner en una función que se llama con "this" como argumento.

<asp:TextBox ID="txtSomething" runat="server" Text=''<%# Bind("someData") %>'' onfocus=" var rng = this.createTextRange(); rng.collapse(); rng.select(); if (this.allowFocusevent==''0'') {return;}; this.allowFocusevent=''0''; this.readOnly=true; this.blur(); var that=this; setTimeout(function(){that.focus()},0); " />

Tengo un TextBox ASP.NET y quiero que sea ReadOnly . (El usuario lo modifica utilizando otro control).

Pero cuando hay un PostBack() , el texto se restablece a una cadena vacía.

Entiendo que si establece la propiedad ReadOnly en True de un TextBox , el contenido no se guarda a través de PostBack() .

¿Hay alguna forma de mantener el contenido después de PostBack() y de que el usuario no TextBox editar el TextBox ?

Intenté establecer la propiedad Enabled en False , pero aún así el contenido no se guarda después de PostBack() .


Establezca la propiedad ContentEditable del cuadro de texto en falso ContentEditable = "false" ... No le permitirá editar el contenido del cuadro de texto, es decir, hará que el cuadro de texto sea de solo lectura y también hará que el valor permanezca en el cuadro de texto después de la devolución de datos. Creo que es La forma más fácil de hacerlo.


Haga que su otro control almacene el valor en un campo oculto, y en la devolución de datos, extraiga el valor del campo oculto y colóquelo en el cuadro de texto en el lado del servidor.


He tenido este mismo problema, pero al usar el enlace de Knockout ''habilitar'' y el texto de control del servidor ASP.Net.

De esta manera:

<asp:TextBox ID="txtCity" runat="server" required="required" class="form-control" placeholder="City" data-bind="value: city, enable: !hasZipCode()"></asp:TextBox>

Sin embargo, cuando se envió el formulario, este valor de campo estaba siempre vacío. Esto ocurrió, supongo, porque si el control está deshabilitado, no es persistente en la cadena ViewState.

Resolví reemplazando bindig ''enable'' por ''attr {readonly: hasZipCode}''

<asp:TextBox ID="txtCity" runat="server" required="required" class="form-control" placeholder="City" data-bind="attr{ value: city, readonly: hasZipCode }">/asp:TextBox>


Obtenga el valor utilizando Request.Form[txtDate.UniqueID] . Lo conseguiras !!


Otra solución que encontré y más fácil es:

Agregue esto al método de carga de página:

protected void Page_Load(object sender, EventArgs e) { TextBox1.Attributes.Add("readonly", "readonly"); }


txtStartDate.Attributes.Add("readonly", "readonly"); en la carga de la página en la mejor de las mejores soluciones, en lugar de Javascripts, variables ocultas, caché, cookies, sesiones y cachés.