2009-05-26 6 views
5

J'ai Dropdownlist sur ma page et sa méthode selectedindexchanged créée dans le code derrière le fichier (.cs). Je voulais créer de fausses publications avec A tag (événement onmouseover).Comment générer de fausses publications avec javascript?

D'abord j'ai vu la source 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> 
  • Puis, je copiais

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

Et, je créé une balise avec l'événement mouseover (pour faire Postback mais comme il a tiré par DROPDOWNLIST)

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

Mais il n'est pas tombé à la méthode SelectedIndexChanged.

  • D'abord, POURQUOI?
  • Deuxièmement, comment puis-je faire cela?

Merci à partir de maintenant.

Répondre

11

Vous pouvez utiliser cet extrait de code -

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

Vous ne pouvez pas utiliser ids uniques codées en dur, car ils peuvent changer en raison de nombreuses raisons. Par exemple l'id changera si l'id du contrôle parent change, etc. Vous devrez obtenir l'UniqueID rendu du côté du serveur en utilisant le code comme celui donné ci-dessus.

EDIT: J'ai oublié de mentionner une chose importante. La page postback que lorsque le selectedIndex de la liste déroulante change :) Donc, si vous voulez tirer de cet événement, changer l'index de la liste déroulante à l'aide et téléphonez immédiatement le code __doPostBack -

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

EDIT2: Ajout Sur ce que Bob a dit, vous pouvez utiliser les contrôles serveur cachés. Je vous suggère d'utiliser un contrôle ASP: Hidden et de connecter son événement OnValueChanged. Ainsi, chaque fois que vous voulez renvoyer votre page au serveur, vous devez juste changer la valeur de votre variable cachée. De cette façon, vous n'aurez pas à utiliser un bouton caché.

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

J'ai changé à: asdasdasdasdad Mais cela ne fonctionne pas. – uzay95

0

Une autre option vous pouvez essayer, que je trouve plus facile et est comme susceptible de se briser, est de créer un caché (style = « display: none » ne pas utiliser la propriété visible) asp: Bouton sur votre page. Lorsque vous souhaitez republier vous pouvez simplement simuler le clic sur ce bouton

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

Si vous voulez coller à l'affichage de retour sur le menu déroulant, assurez-vous que la propriété AutoPostBack de la liste déroulante est toujours définie sur true. Gardez à l'esprit que ce comportement est un peu étrange, vous déclenchez un événement modifié sélectionné sur une souris. Non seulement c'est un peu déroutant, mais vous augmentez également le risque de publication accidentelle, car il est très facile de passer la souris sur quelque chose et de ne rien attendre.

0

N'est-ce pas <%= ddlFaturaNolar.ClientID %>?

+0

ClientID ne fonctionne pas pour les boutons, etc. Il est donc préférable d'utiliser UniqueID pour chaque contrôle. – Kirtan

+0

Ils génèrent les mêmes résultats (j'ai essayé) :) – uzay95

+0

Bon, alors ignorez ma réponse. :-) – janhartmann

1

Je suis désolé de dire les gars

__doPostBack ne fonctionne pas pour DropDownList mais il travaille pour le bouton. Donc faire une chose

Ajouter un bouton qui devrait être suivi comme celui-ci

<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> 

appeler votre méthode de __doPostBack

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