在Asp.net Webforms中我有2个下拉列表,这些下拉列表来自数据库代码隐藏。
我想用第一个ddl过滤器填充第二个ddl。
这是我的代码
$(function () {
$('select#ContentPlaceHolder_ddl1').change(function () {
var param1= $(this).val();
var dataString = { 'param1': param1, 'tip' : 1};
//alert(scope);
//building unit
$('select#ContentPlaceHolder_ddl2').empty();
$.ajax({
url: 'ChangeDDL.aspx/listele',
type: 'POST',
data: dataString,
cache: false,
success: function (data) {
$.each(data, function (key, DropDownListItem) {
$('select#ContentPlaceHolder_ddl2').append(
'<option value="' + DropDownListItem.value + '">'
+ DropDownListItem.optionText +
'</option>');
});
}
});
我可以从html获取数据,但我想要DropDownListItem类的数据。我的班级在这里
public class DropDownListItem
{
public string value { get; set; }
public string optionText { get; set; }
}
在ChangeDDL.aspx中的我正在尝试返回数据,但我不知道如何。这是我的aspx文件
[System.Web.Services.WebMethod]
public static List<DropDownListItem> listele(string scope, int tip)
{
if (tip == 1)
{
List<DropDownListItem> obj = new List<DropDownListItem>();
DataTable dt = (..sql query)
foreach (DataRow dr in dt.Rows)
{
obj.Add(new DropDownListItem
{
value = dr["building_unit"].ToString(),
optionText = dr["building_unit"].ToString()
});
}
return obj;
}
else
{
return null;
}
}
我无法访问侦听功能。
答案 0 :(得分:1)
也许你忘了启用剧本管理员。
<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true">
</asp:ScriptManager>
试试this tutotial。它解释了如何在ASP.NET中使用AJAX。