2009-05-26 35 views
5

Tengo una lista desplegable en mi página y su método de intercambio de información seleccionado creado en el código detrás del archivo (.cs).¿Cómo generar postback falso con javascript?

Quería crear una devolución de datos falsa con una etiqueta A (evento onmouseover).

Primero miré la fuente de html.

<select name="ctl00$cpholder_ana$ddlFaturaNolar" onchange="javascript:setTimeout('__doPostBack(\'ctl00$cpholder_ana$ddlFaturaNolar\',\'\')', 0)" id="ctl00_cpholder_ana_ddlFaturaNolar"> 
    <option selected="selected" value="CHOOSE"></option> 
    <option value="001926">[ 30.04.2009 - 156.492,00 TL ] 001926</option> 
</select> 
  • Entonces, he copiado

    onchange="javascript:setTimeout('__doPostBack(\'ctl00$cpholder_ana$ddlFaturaNolar\',\'\')', 0)" 
    

Y, he creado una etiqueta con el evento mouseover (para hacer devolución de datos pero como despedido por DROPDOWNLIST)

<a onmouseover="javascript:setTimeout('__doPostBack(\'ctl00$cpholder_ana$ddlFaturaNolar\',\'\')', 0)">asdasdasdasdad</a> 

Pero no cayó al método SelectedIndexChanged.

  • Primero, ¿POR QUÉ?
  • En segundo lugar, ¿cómo puedo hacer esto?

Gracias desde ahora.

Respuesta

11

Usted puede utilizar este fragmento de código -

__doPostBack('<%= dropdownlist.UniqueID %>', ''); 

No puede utilizar los identificadores únicos codificados de forma rígida, ya que pueden variar debido a muchas razones. Por ej. La identificación cambiará si la identificación del control principal cambia, etc. Deberá obtener la UniqueID representada desde el servidor utilizando el código indicado anteriormente.

EDITAR: Se olvidó de mencionar una cosa importante. La página devolución de datos sólo cuando el selectedIndex del desplegable cambia :) Por lo tanto, si quieres disparar ese caso, cambiar el índice de la lista desplegable de utilizar este y luego llamar al código __doPostBack -

document.getElementById("<%= dropdownlist.UniqueID %>").selectedIndex = 1; 
__doPostBack('<%= dropdownlist.UniqueID %>', ''); 

Edit2: Adición sobre lo que dijo Bob, puede hacer uso de controles de servidor ocultos. Sugiero que uses un asp: control oculto y conecte su evento OnValueChanged. Entonces, cada vez que quiera publicar su página en el servidor, solo tiene que cambiar el valor de su variable oculta. De esta forma no tendrá que usar un botón oculto.

document.getElementById("<%= hiddenField.UniqueID %>").value = (new Date()).getTime(); 
+0

he cambiado a: asdasdasdasdad Pero no funciona. – uzay95

0

Otra opción que puede probar, que me parece más fácil y es como propensos a romperse, es crear un escondido (style = "display: none" no utilice la propiedad visible) asp: Button en su página. Cuando desee después de vuelta sólo se puede simular el clic en ese botón

document.getElementById("<%= Button1.ClientID %>").click(); 

Si usted quiere meter a publicar de nuevo en el menú desplegable, asegúrese de que la propiedad AutoPostBack del desplegable todavía se establece en true. Solo ten en cuenta que este comportamiento es un poco extraño, estás disparando un evento cambiado seleccionado sobre el mouse. No solo es un poco confuso, sino que también está aumentando el riesgo de devoluciones accidentales, ya que es muy fácil pasar el ratón sobre algo y no esperar que pase nada.

0

¿No es <%= ddlFaturaNolar.ClientID %>?

+0

ClientID no funciona para botones, etc. Por lo tanto, es mejor utilizar UniqueID para cada control. – Kirtan

+0

Están generando los mismos resultados (lo intenté) :) – uzay95

+0

Bien, entonces ignore mi respuesta. :-) – janhartmann

1

Lamento decir chicos

__doPostBack no está funcionando para DropDownList pero está trabajando para el botón. Así que hacer una cosa

Añadir un botón que debe ser seguido como esto

<asp:DropDownList ID="ddlCategory" runat="server" AutoPostBack="true" 
OnSelectedIndexChanged="ddlCategory_SelectedIndexChanged"> 
    <asp:ListItem Text="All" Value="0" Selected="True"></asp:ListItem> 
    <asp:ListItem Text="Published" Value="1"></asp:ListItem> 
    <asp:ListItem Text="Pending" Value="2"></asp:ListItem> 
    <asp:ListItem Text="Rejected" Value="3"></asp:ListItem></asp:DropDownList> 

ahora llamar a su método __doPostBack

__doPostBack('<%= btnRefresh.UniqueID %>',''); 
Cuestiones relacionadas