2009-05-26 12 views
5

Sayfamda ve dosya (.cs) arkasındaki kodda oluşturulan selectedindexchanged yönteminde Dropdownlist var.Javascript ile sahte geri gönderme nasıl oluşturulur?

A etiketi (onmouseover olayı) ile sahte geri gönderme oluşturmak istedim.

İlk önce html kaynağını görüntüledim.

<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> 
  • Sonra ben

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

kopyalanan Ve ben mouseover olayla bir etiket oluşturdunuz (Geri gönderme yapmak ancak listeyi inceleyin tarafından ateşlediği)

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

Ancak SelectedIndexChanged yöntemine düşmedi.

  • İlk olarak, NEDEN?
  • İkincisi, Bunu nasıl yapabilirim?

Şimdiden teşekkürler. Onlar birçok nedenden dolayı değişebilir çünkü sabit kodlu benzersiz kimlikleri kullanamaz

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

-

cevap

11

Bu kod parçacığını kullanabilirsiniz. Örneğin Üst denetimin kimliği değiştiğinde, kimlik değişecektir. Yukarıdaki gibi bir kodu kullanarak sunucu tarafından oluşturulan UniqueID'yi almanız gerekir.

DÜZENLEME: Önemli bir şeyden bahsetmeyi unuttum. açılır listesinin selectedIndex :) Yani değişen tek zaman çağrı ardından __doPostBack kodu, o olayı bu kullanarak açılır listeden dizinini değiştirmek ve isterseniz, sayfa, geri gönderebileceksiniz olacak -

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

EDIT2: Ekleme Bob'un söylediğine göre, gizli sunucu kontrollerinden yararlanabilirsiniz. Bir asp kullanın: Gizli kontrol ve OnValueChanged olayını bağlamanızı öneririm. Dolayısıyla, sayfanızı sunucuya geri göndermek istediğinizde, sadece gizli değişkeninizin değerini değiştirmeniz gerekir. Bu şekilde gizli bir tuş kullanmanız gerekmeyecek. asp:

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

şimdi __doPostBack yöntemi dediğimiz bu

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

gibi takip edilmesi gereken bir düğme ekleyin bir şey

yapın: asdasdasdasdad Ama çalışmıyor. – uzay95

0

Ben daha kolay bulmak ve benzeri kırmaya olasıdır deneyebileceğiniz başka bir seçenek, bir gizli ("none ekran" Görünür özelliğini kullanmayan style =): yaratmaktır Düğmesi senin sayfa. geri göndermek istediğinizde sadece Açılan listede AutoPostBack özelliği hala doğru olarak ayarlanmış olduğundan emin olun açılır geri gönderme sadık istiyorsanız

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

o düğmeyi tıklayın simüle edebilirsiniz. Sadece bu davranış biraz garip, bir fare üzerinde seçilen bir değiştirilen olay ateş ediyor. Bu sadece biraz kafa karıştırıcı değil, aynı zamanda yanlışlıkla geri gönderilme riskini de arttırıyor, çünkü bir şeylerin üzerine fare yapmak çok kolay ve hiçbir şeyin gerçekleşmesini beklemiyor.

0

<%= ddlFaturaNolar.ClientID %> değil mi?

+0

İstemci Kimliği düğmeler vb. Için çalışmıyor. Bu nedenle her denetim için UniqueID kullanması daha iyi. – Kirtan

+0

Aynı sonuçları üretiyorlar (denedim) :) – uzay95

+0

Tamam, cevabımı görmezden gel. :-) – janhartmann

1

Ben

__doPostBack DropDownList için çalışmıyor adamlar söylemek üzgünüm ama Düğme için çalışıyor. Yani değiştirildi

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