2009-05-26 63 views
5

我在我的頁面上使用了Dropdownlist,在代碼背後創建了selectedindexchanged方法(.cs)。如何用javascript生成假回傳?

我想用A標記(onmouseover事件)創建假回傳。

首先我查看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> 
  • 然後,我複製

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

而且,我創建一個標籤,鼠標懸停事件(做回發,但因爲它通過DROPDOWNLIST解僱)

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

但它沒有下降到SelectedIndexChanged方法。

  • 首先,爲什麼?
  • 二,我該怎麼做?

從現在開始感謝。

回答

11

您可以使用此代碼段 -

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

不能使用硬編碼的唯一ID,因爲它們可能由於多種原因而發生變化。對於例如如果父控件的id發生變化,id將會發生變化等等。您必須使用上面給出的代碼從服務器端獲取UniqueID。

編輯:忘了提一件重要的事情。該頁面將回傳僅在下拉列表的selectedIndex改變:)所以,如果你想火這種情況下,使用這種改變的下拉列表中的索引,然後調用__doPostBack碼 -

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

EDIT2:添加根據Bob的說法,您可以使用隱藏的服務器控件。我建議你使用一個asp:Hidden控件並掛鉤它的OnValueChanged事件。所以,只要你想把你的頁面發回服務器,你只需要改變隱藏變量的值。這樣你就不必使用隱藏的按鈕。

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

我改成:asdasdasdasdad但它不工作。 – uzay95 2009-05-26 12:48:26

0

另一種選擇,你可以試試,我覺得更輕鬆,就像是有可能打破,是創建一個隱藏的(風格=「顯示:無」不使用Visible屬性)ASP:在您的按鈕頁。當你想回來後你可以模擬該按鈕

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

如果你要堅持回發的下拉,確保在下拉的AutoPostBack屬性仍設置爲true的點擊。請記住,這種行爲有點奇怪,您正在將鼠標移到選定的更改事件上。這不僅有點令人困惑,而且還會增加意外回發的風險,因爲很容易將某些東西放在一邊,並期望什麼都不會發生。

0

難道不是<%= ddlFaturaNolar.ClientID %>

+0

ClientID不適用於按鈕等。因此,最好爲每個控件使用UniqueID。 – Kirtan 2009-05-26 12:59:05

1

我很抱歉地說傢伙

__doPostBack不是爲DropDownList的工作,但它正在爲按鈕。所以,做一件事

添加一個按鈕,應遵循這樣

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

現在打電話給你的__doPostBack方法

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