首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用AJAX填充下拉列表

使用AJAX填充下拉列表
EN

Stack Overflow用户
提问于 2011-03-07 07:30:05
回答 1查看 9K关注 0票数 5

我有3个下拉框,使用HTML选择标签创建。在页面加载中,第一个框有几个名称。现在,当我单击第一个框中的一个名称时,应该在第二个框中出现更多的名称,当我单击第二个框中的名称时,应该在第三个框中出现更多的名称。如何使用AJAX实现这一点?我只能使用ASP.NetMS Server。我是AJAX的一个完全的新手,我一直在教育自己,但是没有结果。我已经找了将近一个星期了。我查找了w3schools.com,但是当我尝试该代码时,它没有工作。请帮助我,请一步一步地告诉我,要使它发挥作用所需的东西,以及它的去向。我的最后期限快到了,我的智慧已尽全力使它发挥作用。救救我!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-03-07 07:40:16

我建议将三个下拉列表放在一个updatepanel中,并为UpdatePanel在每个下拉列表中添加一个触发器。然后,当值发生变化时,重新填充下拉列表并让updatepanel推送更新。还保留会话状态,以防要提交值。

我面前没有编译器,但如果需要,只需发表评论,我明天就会发布代码。

工作实例

我使用的是visual和母版页附带的“传统模板”,所以请原谅内容空间持有者。但这应该能证明我的意思:

代码语言:javascript
复制
<%@ Page Title="" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="MultiDropDown.aspx.cs" Inherits="AppSettingsRetrieval.MultiDropDown" %>
<asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" runat="server">
    <script runat="server">
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                String[] options = new[] { "ABC", "DEF", "GHI", "JKL", "MNO", "PQR", "STU", "VWX", "YZA" };
                foreach (String option in options)
                {
                    this.DropDownList1.Items.Add(new ListItem(option, option));
                }
            }
        }

        public void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
        {
            this.DropDownList2.Items.Clear();
            this.DropDownList2.Items.Add(new ListItem("--- Please Select One ---"));

            String[] options = new[] { "123", "456", "789", "101", "112", "131", "415", "161", "718" };
            foreach (String option in options)
            {
                var str = String.Format("{0} {1}", this.DropDownList1.SelectedValue, option);
                this.DropDownList2.Items.Add(new ListItem(str, str));
            }
            this.DropDownList2.Enabled = true;

            this.DropDownList3.Enabled = false;
        }

        public void DropDownList2_SelectedIndexChanged(object sender, EventArgs e)
        {
            this.DropDownList3.Items.Clear();
            this.DropDownList3.Items.Add(new ListItem("--- Please Select One ---"));

            String[] options = new[] { "test", "testing", "tester", "foo", "bar", "foobar" };
            foreach (String option in options)
            {
                var str = String.Format("{0} {1}", this.DropDownList2.SelectedValue, option);
                this.DropDownList3.Items.Add(new ListItem(str, str));
            }
            this.DropDownList3.Enabled = true;
        }
    </script>
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
    <asp:ScriptManager runat="server" ID="ScriptManager1"></asp:ScriptManager>

    <asp:UpdatePanel runat="server" ID="UpdatePanel1" UpdateMode="Conditional">
        <ContentTemplate>
            <fieldset>
                <legend>Consecutive Dropdown List</legend>
                <p>
                    Primary Filter:
                    <asp:DropDownList runat="server" ID="DropDownList1" OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged" AutoPostBack="true">
                        <asp:ListItem Text="---Please Select One---" />
                    </asp:DropDownList>
                </p>
                <p>
                    Secondary Filter:
                    <asp:DropDownList runat="server" ID="DropDownList2" OnSelectedIndexChanged="DropDownList2_SelectedIndexChanged" AutoPostBack="true" Enabled="false">
                        <asp:ListItem Text="---Please Select One---" />
                    </asp:DropDownList>
                </p>
                <p>
                    Final Filter:
                    <asp:DropDownList runat="server" ID="DropDownList3" Enabled="false">
                        <asp:ListItem Text="---Please Select One---" />
                    </asp:DropDownList>
                </p>
            </fieldset>
        </ContentTemplate>
    </asp:UpdatePanel>
</asp:Content>
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5216990

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档