Asp.Net如何从另一个下拉列表中填充下拉列表

时间:2017-08-03 08:25:31

标签: c# asp.net drop-down-menu

在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;
    }
}

我无法访问侦听功能。

1 个答案:

答案 0 :(得分:1)

也许你忘了启用剧本管理员。

<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true">
</asp:ScriptManager> 

试试this tutotial。它解释了如何在ASP.NET中使用AJAX。