2016-05-12 91 views
0

我的aspx頁面包含一個帶有一些值的下拉mwnu。當在下拉列表中檢測到更改時,我想在相關的aspx.cs頁面中調用我的loadInstances()方法。我有附着在菜單像這樣的事件偵聽器:調用aspx.cs方法時遇到問題

$("#ContentPlaceHolder1_DropDownListCounter").change(function() { 
    console.log("I've been hit!"); 
    <%loadInstances();%>; 
}); 

我aspx.cs方法是這樣的:

public void loadInstances() 
{ 
    foreach (string dataInfo in DataHelper.getInfo()) 
    { 
     ListItem item = new ListItem(dataInfo, dataInfo); 
     ListBoxData.Items.Add(item); 
    } 
} 

ListBoxData是在我的aspx頁面的列表框,我想在下拉的改變時填充。我可以確認事件監聽器正在工作,因爲我已經得到了「我已經被擊中了!」出現在我的控制檯中。但是loadInstances()方法沒有被調用。我是否錯過了從我的aspx頁面調用aspx.cs方法的步驟?

+1

使用ajax和webmethods。 http://www.c-sharpcorner.com/UploadFile/rohatash/calling-server-side-function-from-javascript-in-Asp-Net/ – Zaki

回答

0

請修改您這樣的代碼: -

$("#<%=DropDownListCounter.ClientID%>").change(function() { 
    console.log("I've been hit!"); 
    "<%=loadInstances()%>";   
}); 

但是,你正在做的,你需要在DropDownList添加AutoPostBack="true"操作,然後將這段腳本工作。 如果你不想要AutoPostBack你可以使用AjaxUpdatePanel

+0

這不會工作,因爲我的loadInstances()是無效的,doesn' t返回任何東西。 – Novastorm

+0

@Novastorm在你的'DropDownList'中添加'AutoPostBack =「true」'這樣''' – Ansari

+0

絕對正確,這是我的壞我沒有添加'AutoPostBack =「真」「 - 非常感謝! :) – Novastorm