使用jQuery加载下拉列表

时间:2011-05-24 09:01:07

标签: jquery drop-down-menu

当用户第一次点击DropDownList时,是否可以在asp.NET中加载下拉列表?

我会尽力解释一下。我有一个带有DropDownList和一个项目的aspx页面。

ListItem listlt = new ListItem("UNDEFINED", "-1");
ddl.Items.Insert(0, listlt);

当用户点击DropDownList时,我想加载DropDownList中的所有数据。这是因为下拉列表包含大量数据,并且页面负载非常慢。

任何想法? thx提前

2 个答案:

答案 0 :(得分:2)

您可以改用PageMethods。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Services;
public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {


    }

    [WebMethod]
    public static Dictionary<string, string> getItems()
    {
        return new Dictionary<string, string>(){
            {"1","Item1"} ,{"2","Item2"}};
    }
}

ASPX

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
    <title>jQuery to call page methods in ASP.NET</title>
    <script type="text/javascript" src="http://code.jquery.com/jquery-1.6.1.min.js"></script>
</head>
<body>
    <form id="Form1" runat="server">
    <asp:ScriptManager EnablePageMethods="true" ID="ScriptManager1" runat="server">
    </asp:ScriptManager>

    <script type="text/javascript">
        $(document).ready(function() {
            $('select#<%= DropDownList1.ClientID %>').click(function() {

                if (this.options.length <= 0) {
                    PageMethods.getItems(function(res) {
                        //alert('e');
                        for (r in res) {
                            //$(this).append($('<option value="'+ r+'">' + res[r] + '</option>'));
                            //$(this).append($('<option></option>'));
                            $('select#<%= DropDownList1.ClientID %>').append( $('<option></option>').val(r).html(res[r]) );
                        }
                    });
                }
            });
        });
    </script>
    <asp:DropDownList ID="DropDownList1" runat="server" />
    </form>
</body>
</html>

答案 1 :(得分:0)

使用jquery load

$("select#theDropdownID").click(function(){
    $(this).load("thedropdownItems.html");
});

并在thedropdownItems.html

<option value='foo'>foo</option>
<option value='bar'>bar</option>
....