inhabilitar boton

22/04/2010 - 18:21 por Jaime Andres | Informe spam
Hola que tal,
estoy trabajando en una aplicacion web (en c#) y no se como se puede hacer
para inhabilitar un boton inmediatamente este sea precionado pero que
continue realizando los demas procesos del boton, algo asi como lo que se
hace en las paginas de Microsoft o Facebook (incluso en este sitio la pagina
donde se hacen las preguntas al presionar el boton "Post" se inhabilita
mientras publica la pregunta), de tal manera que no puedan
volver a precionarlo mientras termina de ejecutarse el resto del codigo

otra pregunta, se puede hacer en web permitirle al usuario seleccionar una
carpeta es vez de un archivo?

Muchas gracias

Preguntas similare

Leer las respuestas

#1 Jose A. Fernandez
24/04/2010 - 13:08 | Informe spam
Hola Jaime

Justamente tenia un articulo en mi blog "en borrador" sobre este
tema... asi que copio primeramente algun codigo y preparo el post para
publicarlo y te aviso por aqui
(Ahora tengo uns justificacion para publicarlo que es tratar de
ayudarte)

TEMA 2: Tendrias que ver opciones de Multiple fileUpload (con Flash es
muy buena) entonces puedes seleccionar varios archivos u no solo uno

..Aqui va una parte...



Opción 1: Insertando comportamiento del lado del cliente en el mismo
botón
Opción 1.1: Insertando en la propiedad OnClientScript
Ejemplo
<asp:Button ID="btnEnviar11" runat="server"
Text="Enviar"

OnClientClick="this.disabled=true;this.value='Enviando...';__doPostBack(this.name,'');"
onclick="btnEnviar11_Click" />

Podríamos obviar la ultima función __doPostBack(this.name,'');
que es la que realiza el postback si utilizamos el método
UseSubmitBehavior en false;
Esta propiedad UseSubmitBehavior “Obtiene o establece un valor que
indica si el control Button utiliza el mecanismo de envío del
explorador del cliente o el mecanismo de devolución de datos de
ASP.NET.” Es true si el control utiliza el mecanismo de envío del
explorador del cliente; de lo contrario, es false. El valor
predeterminado es true.

<asp:Button ID="btnEnviar11" runat="server"
Text="Enviar"

OnClientClick="this.disabled=true;this.value='Enviando...';"
UseSubmitBehavior="false"
onclick="btnEnviar11_Click" />


Opción 1.2: Insertando comportamiento desde codebehind
Aquí a lo hacemos por codigo agregando comportamiento en el cliente
con la colección de Attributes
idem al comportamiento anterior pero lo hacemos por código y
ayudándonos con el método GetPostBackEventReference
btnEnviar12.Attributes.Add("onclick",
"this.disabled=true;this.value='Enviando...';" +
Page.GetPostBackEventReference(btnEnviar12));Podríamos obviar la
utilización del método GetPostBackEventReference, si el boton
utilizamos la propiedad UseSubmitBehavior en false (idem la opción
1.1)

NOTA IMPORTANTE: Validación del formulario
Hay un pequeño gran problema al agregar este comportamiento al botón,
cuando tenemos validación, no la toma en cuenta. No la dispara.
Hay que agregar a la funcionalidad/comportamiento que estamos
insertando para disparar la validación y verificarla
if (typeof(Page_ClientValidate) == 'function' &&
Page_ClientValidate() == false) { return false; }
En el ejemplo queda así para el botón 1.3
<asp:Button ID="btnEnviar11" runat="server"
Text="Enviar"
OnClientClick="if (typeof(Page_ClientValidate) ='function' && Page_ClientValidate() == false) { return
false; };this.disabled=true;this.value='Enviando...';"
UseSubmitBehavior="false"
onclick="btnEnviar11_Click" />


TIP: Validar un grupo (ValidationGroup)?
Hay que llamar a la función Page_ClientValidate(‘NombreDelGrupo’)






OPCION 2: Utilizando jQuery. Agregando el comportamiento al
formulario

La idea idea ess suscribirse al evento Submit del boton para detectar
que ya se eesta enviando el formularo
Esto lo dejo para el articulo porque tengo varias opciones
Aqui al suscribirse al evento del formulario no es necesario validar
la pagina


EN EL POST TENGO UNA DEMO... asi que si no es hoy MAñANA LO PUBLICO


Espero que te sirva de ayuda o guia
Saludos

______________________
Jose A. Fernandez
blog: http://geeks.ms/blogs/fernandezja







On 22 abr, 13:21, Jaime Andres
wrote:
Hola que tal,
estoy trabajando en una aplicacion web (en c#) y no se como se puede hacer
para inhabilitar un boton inmediatamente este sea precionado pero que
continue realizando los demas procesos del boton, algo asi como lo que se
hace en las paginas de Microsoft o Facebook (incluso en este sitio la pagina
donde se hacen las preguntas al presionar el boton "Post" se inhabilita
mientras publica la pregunta), de tal manera que no puedan
volver a precionarlo mientras termina de ejecutarse el resto del codigo

otra pregunta, se puede hacer en web permitirle al usuario seleccionar una
carpeta es vez de un archivo?

Muchas gracias
Respuesta Responder a este mensaje
#2 Daniel Ulfe
24/04/2010 - 16:09 | Informe spam
Hola,

Tienes que usar Javascript para desabilitar (u ocultar) el boton cuando
el usuario hace click especificamente el evento cliente "onclick"...
que puedes definirlo en modo diseño mediante la propiedad
"onclientclick" del boton asp.

http://msdn.microsoft.com/en-us/lib...click.aspx

Daniel.


On 4/22/2010 12:21 PM, Jaime Andres wrote:
Hola que tal,
estoy trabajando en una aplicacion web (en c#) y no se como se puede hacer
para inhabilitar un boton inmediatamente este sea precionado pero que
continue realizando los demas procesos del boton, algo asi como lo que se
hace en las paginas de Microsoft o Facebook (incluso en este sitio la pagina
donde se hacen las preguntas al presionar el boton "Post" se inhabilita
mientras publica la pregunta), de tal manera que no puedan
volver a precionarlo mientras termina de ejecutarse el resto del codigo

otra pregunta, se puede hacer en web permitirle al usuario seleccionar una
carpeta es vez de un archivo?

Muchas gracias
Respuesta Responder a este mensaje
#3 Jose A. Fernandez
24/04/2010 - 17:41 | Informe spam
Hola Jaime

(no se que paso porque escribí un post en respuesta y no salio)
Justamente tenia un post en borrador para publicar sobre este tema asi
que te paso algunas notas que tenia (entre hoy o mañana publico y
posteo aqui la URL para que la tengas de rerferencia)

Aqui te paso algo para que lo empieces a ver...


Opción 1: Insertando comportamiento del lado del cliente en el mismo
botón
Opción 1.1: Insertando en la propiedad OnClientScript
Ejemplo
<asp:Button ID="btnEnviar11" runat="server"
Text="Enviar"

OnClientClick="this.disabled=true;this.value='Enviando...';__doPostBack(this.name,'');"
onclick="btnEnviar11_Click" />

Podríamos obviar la ultima función __doPostBack(this.name,'');
que es la que realiza el postback si utilizamos el método
UseSubmitBehavior en false;
Esta propiedad UseSubmitBehavior “Obtiene o establece un valor que
indica si el control Button utiliza el mecanismo de envío del
explorador del cliente o el mecanismo de devolución de datos de
ASP.NET.” Es true si el control utiliza el mecanismo de envío del
explorador del cliente; de lo contrario, es false. El valor
predeterminado es true.

<asp:Button ID="btnEnviar11" runat="server"
Text="Enviar"

OnClientClick="this.disabled=true;this.value='Enviando...';"
UseSubmitBehavior="false"
onclick="btnEnviar11_Click" />


Opción 1.2: Insertando comportamiento desde codebehind
Aquí a lo hacemos por codigo agregando comportamiento en el cliente
con la colección de Attributes
idem al comportamiento anterior pero lo hacemos por código y
ayudándonos con el método GetPostBackEventReference
btnEnviar12.Attributes.Add("onclick",
"this.disabled=true;this.value='Enviando...';" +
Page.GetPostBackEventReference(btnEnviar12));Podríamos obviar la
utilización del método GetPostBackEventReference, si el boton
utilizamos la propiedad UseSubmitBehavior en false (idem la opción
1.1)

NOTA IMPORTANTE: Validación del formulario
Hay un pequeño gran problema al agregar este comportamiento al botón,
cuando tenemos validación, no la toma en cuenta. No la dispara.
Hay que agregar a la funcionalidad/comportamiento que estamos
insertando para disparar la validación y verificarla
if (typeof(Page_ClientValidate) == 'function' &&
Page_ClientValidate() == false) { return false; }
En el ejemplo queda así para el botón 1.3
<asp:Button ID="btnEnviar11" runat="server"
Text="Enviar"
OnClientClick="if (typeof(Page_ClientValidate) ='function' && Page_ClientValidate() == false) { return
false; };this.disabled=true;this.value='Enviando...';"
UseSubmitBehavior="false"
onclick="btnEnviar11_Click" />


TIP: Validar un grupo (ValidationGroup)?
Hay que llamar a la función Page_ClientValidate(‘NombreDelGrupo’)






OPCION 2: Utilizando jQuery. Agregando el comportamiento al
formulario

La idea idea ess suscribirse al evento Submit del boton para detectar
que ya se eesta enviando el formularo
Esto lo dejo para el articulo porque tengo varias opciones
Aqui al suscribirse al evento del formulario no es necesario validar
la pagina


EN EL POST TENGO UNA DEMO... asi que si no es hoy MAñANA LO PUBLICO


Espero que te sirva de ayuda o guia
Saludos

______________________
Jose A. Fernandez
blog: http://geeks.ms/blogs/fernandezja




On 22 abr, 13:21, Jaime Andres
wrote:
Hola que tal,
estoy trabajando en una aplicacion web (en c#) y no se como se puede hacer
para inhabilitar un boton inmediatamente este sea precionado pero que
continue realizando los demas procesos del boton, algo asi como lo que se
hace en las paginas de Microsoft o Facebook (incluso en este sitio la pagina
donde se hacen las preguntas al presionar el boton "Post" se inhabilita
mientras publica la pregunta), de tal manera que no puedan
volver a precionarlo mientras termina de ejecutarse el resto del codigo

otra pregunta, se puede hacer en web permitirle al usuario seleccionar una
carpeta es vez de un archivo?

Muchas gracias
Respuesta Responder a este mensaje
#4 Jose A. Fernandez
24/04/2010 - 23:55 | Informe spam
Hola Jaime

NOTA: Nada que ver con el tema
Algo esta pasando? Estoy escribiendo en el newsgroup de ASP.NET en español a
traves de la UI de google grupos y luego se elimina
Ahora lo estoy realizando desde la UI de Live Mail (suscribiendo al
newsgroups)

Volviendo al tema

TEMA 1: Boton
Comentaba en dos post "identicos" que tu pedido lo tenia en para publicar en
mi blog.. lo tengo en borrador asi que t ecopio parte del mismo y luego te
envio el enlace (cuando lo publique entre mañana o pasado) si tengo unos
minutos para retocarlo

TEMA 2: No puedes seleccioanar carpetas pero si multiples archivos
Es decir un fileupload multiple (Podrias entrar a la carpeta y con
Ctrl+A/Ctrl+E no recuerdo bien seleccionar todo)
para realizar multiple fileupload hay varias alternativas
Te dejo un post en los foros de MSDN que hablamos de algo similar hace un
par de dias
- subir archivos masivos
http://social.msdn.microsoft.com/Fo...210dac510c



PARTE DEL POST DEL TEMA 1:
Deshabilitar un botón al submit y/o Prevenir doble Postback.


Opción 1: Insertando comportamiento del lado del cliente en el mismo botón

Opción 1.1: Insertando en la propiedad OnClientScript
Nuestro botón nos queda de esta manera
Es importante resaltar la ultima parte que realiza el postback que que lo
detectemos del lado del servidor

<asp:Button ID="btnEnviar11" runat="server"
Text="Enviar"
OnClientClick="this.disabled=true;this.value='Enviando...';__doPostBack(this.name,'');"
onclick="btnEnviar11_Click" />
Podríamos obviar la ultima función __doPostBack(this.name,''); que es la
que realiza el postback si utilizamos el método UseSubmitBehavior en false;
Esta propiedad UseSubmitBehavior “Obtiene o establece un valor que indica si
el control Button utiliza el mecanismo de envío del explorador del cliente o
el mecanismo de devolución de datos de ASP.NET.” Es true si el control
utiliza el mecanismo de envío del explorador del cliente; de lo contrario,
es false. El valor predeterminado es true.

<asp:Button ID="btnEnviar11" runat="server"
Text="Enviar"
OnClientClick="this.disabled=true;this.value='Enviando...';"
UseSubmitBehavior="false"
onclick="btnEnviar11_Click" />
NOTA: para un poco mas de ciencia ficción agregue la parte de cambiar el
valor del texto del botón :)


Opción 1.2: Insertando comportamiento desde codebehind

Aquí a lo hacemos por codigo agregando comportamiento en el cliente con la
colección de Attributes
idem al comportamiento anterior pero lo hacemos por código y ayudándonos con
el método GetPostBackEventReference

btnEnviar12.Attributes.Add("onclick",
"this.disabled=true;this.value='Enviando...';" +
Page.GetPostBackEventReference(btnEnviar12));Podríamos obviar la utilización
del método GetPostBackEventReference, si el boton utilizamos la propiedad
UseSubmitBehavior en false (idem la opción 1.1)



NOTA IMPORTANTE: Validación del formulario

Hay un pequeño gran problema al agregar este comportamiento al botón, cuando
tenemos validación, no la toma en cuenta. No la dispara.
<asp:Button ID="btnEnviar11" runat="server"
Text="Enviar"
OnClientClick="if (typeof(Page_ClientValidate) == 'function' &&
Page_ClientValidate() == false) { return
false; };this.disabled=true;this.value='Enviando...';"
UseSubmitBehavior="false"
onclick="btnEnviar11_Click" />


Hay que agregar a la funcionalidad/comportamiento que estamos insertando
para disparar la validación y verificarla

if (typeof(Page_ClientValidate) == 'function' && Page_ClientValidate() ==
false) { return false; }


TIP: Validar un grupo (ValidationGroup)?
Hay que llamar a la función Page_ClientValidate(‘NombreDelGrupo’)



OPCION 2: Utilizando jQuery. Agregando el comportamiento al formulario

Aqui nos ayudamos con la librería jQuery (que es vox populi) para detectar
el evento submit del formulario, entonces allí verificamos
Que ganamos con esto? No es necesaria verificar la validaciones de ASP.NET
ya que antes de realizar el submit se realiza esta acción
ESTO ES LO QUE ME FALTABA EN MI POST, asi que lo veo rapido y lo publico

voy a postear por aqui la url (para estar atentos je)

Saludos
Espero que te sirva de ayuda o guia

______________________
Jose A. Fernandez
blog: http://geeks.ms/blogs/fernandezja









"Jaime Andres" escribió en el
mensaje de noticias:
Hola que tal,
estoy trabajando en una aplicacion web (en c#) y no se como se puede hacer
para inhabilitar un boton inmediatamente este sea precionado pero que
continue realizando los demas procesos del boton, algo asi como lo que se
hace en las paginas de Microsoft o Facebook (incluso en este sitio la
pagina
donde se hacen las preguntas al presionar el boton "Post" se inhabilita
mientras publica la pregunta), de tal manera que no puedan
volver a precionarlo mientras termina de ejecutarse el resto del codigo

otra pregunta, se puede hacer en web permitirle al usuario seleccionar una
carpeta es vez de un archivo?

Muchas gracias
Respuesta Responder a este mensaje
#5 g-n-r
30/03/2011 - 22:41 | Informe spam
Jaime Andres escribió el 22/04/2010 18:21 :
Hola que tal,
estoy trabajando en una aplicacion web (en c#) y no se como se puede hacer
para inhabilitar un boton inmediatamente este sea precionado pero que
continue realizando los demas procesos del boton, algo asi como lo que se
hace en las paginas de Microsoft o Facebook (incluso en este sitio la pagina
donde se hacen las preguntas al presionar el boton "Post" se
inhabilita
mientras publica la pregunta), de tal manera que no puedan
volver a precionarlo mientras termina de ejecutarse el resto del codigo

otra pregunta, se puede hacer en web permitirle al usuario seleccionar una
carpeta es vez de un archivo?

Muchas gracias


Me inscribi solamente para agradecer, nunca esta demas.

Excelente pagina

Saludos
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida