2010-02-04 10 views
7

En jQuery ¿hay alguna manera de distinguir entre menús desplegables postbacking y las no postbacking (ASP.NET 3.5):jQuery AutoPostBack

$('select').change(function(e) 
{ 
     //something like this 
     if ($(this).attr('AutoPostback') == true) 
     { 
      //do something here 

     } 
     else 
     { 
      //do something else 
     } 

cree que se llame a la función de servidor de secuencia de comandos aquí para determinar AutoPostBack .

Respuesta

4

Típicamente, un desplegable que se va a devolución de datos tendrá un onchange atributo que contiene algo así como "__doPostBack (" aunque también habrá algunas otras cosas en ese país.

por lo que podría hacer algo como el siguiente, que no he probado, así que espero que no hay errores tipográficos

$('select[onchange*="__doPostBack("]').change(...your handler for postbacking control...); 
$('select:not([onchange*="__doPostBack("])').change(...your handler for non-postbacking control...); 
+0

Hay un error tipográfico, pero si lo haces 'selecciona [onchange * = "__ doPostBack"]', todo está muy bien, muchas gracias. – Victor

0

El atributo AutoPostBack, IIRC, es del lado del servidor. En otras palabras, es analizado por el servidor y nunca llega al navegador.

Sería un poco redundante código-sabio, pero que podría darle una CssClass = "AutoPostBack" y luego comprobar que a través de jQuery

+0

Gracias por responder. Sí, sé que es del lado del servidor por eso dije que probablemente tenga que llamar a una función del lado del servidor aquí desde el selector – Victor

+0

Bueno, pensándolo bien, la mayoría de los controles configurados para realizar auto-devolución lo están haciendo a través de javascript, entonces quizás hay una manera de verificar eso. –

+0

Sí, resulta que sí, ver la respuesta anterior – Victor

0

Encontré este hilo un poco tarde pero tal vez alguien más en el camino lo encuentre útil.

También tuve problemas para obtener el jquery ui selectmenu para hacer una devolución de datos. los comentarios anteriores me pusieron bastante cerca, pero aparecieron errores cuando lo ejecuté. Esto puede deberse a la versión diferente que estoy usando, pero mi solución final fue adjuntar la devolución de datos al evento de cambio de forma un poco diferente. Tuve que pasar cadenas a la devolución de llamada en lugar del elemento real. El primer parámetro es la identificación del elemento de selección y el segundo parámetro es el nombre de la función del lado del servidor que se supone que debe invocarse.

$("#cboStateFilter").selectmenu({ 
    change: function (event, ui) { __doPostBack("cboStateFilter", 'cboStateFilter_SelectedIndexChanged'); } 
}); 
Cuestiones relacionadas