2016-05-12 104 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