【问题标题】:How to implement cascading DropDownList ASP.Net control? [closed]如何实现级联 DropDownList ASP.Net 控件? [关闭]
【发布时间】:2014-01-10 19:00:40
【问题描述】:

我有两个DropDownList 控件的代码,一个影响另一个中的元素。代码是:

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        FillDropDownList();
    }
}

我已将AutoPostBack="True" 设置为时事通讯DropDownList

    private void FillDropDownList()
    {
        DataSet ds = new DataSet();
        SqlDataAdapter myda = new SqlDataAdapter("Select newsletter  FROM Tablename", connection Object);
        myda.Fill(ds);
        drop_date.DataSource = ds;
        drop_date.DataValueField = "date";
        drop_date.DataBind();
        drop_date.Items.Insert(0, new ListItem("Select", "0"));
    }

    protected void drop_date_SelectedIndexChanged(object sender, EventArgs e)
    {
        DataSet ds = new DataSet();
        SqlDataAdapter myda = new SqlDataAdapter("Select newsletter FROM tablename where date='"+drop_date.SelectedValue+"'",connection_Object);
        myda.Fill(ds);
        drop_newsletter.DataSource = ds;
        drop_newsletter.DataValueField = "newsletter";
        drop_newsletter.DataBind();
        drop_newsletter.Items.Insert(0, new ListItem("Select", "0"));
    }

我认为这段代码是正确的,但我不确定如何在使用 asp.net 和 html 的标记代码中应用它。我怎么把它放进去?还是有更简单的javascript解决方案?

【问题讨论】:

  • 你是说你从某个地方得到了这个代码隐藏文件,但是你没有相应的标记?如果是这样,那是您要求的(有人编写标记以配合此代码)吗?
  • 你的问题很不清楚。

标签: c# asp.net


【解决方案1】:

这是您将如何使用 asp.net 创建下拉列表:

<asp:updatepanel runat="server" id="UpdatePanel" UpdateMode="Conditional">
    <contenttemplate>
        <asp:dropdownlist runat="server" id="drop_date" OnSelectedIndexChanged="drop_date_SelectedIndexChanged" AutoPostBack="true">
        </asp:dropdownlist>
        <asp:dropdownlist runat="server" id="drop_newsletter">
        </asp:dropdownlist>
    </contenttemplate>
</asp:updatepanel>

然后在你的 .cs 代码中:

protected void drop_date_SelectedIndexChanged(object sender, EventArgs e)
{
    DataSet ds = new DataSet();
    SqlDataAdapter myda = new SqlDataAdapter("Select newsletter FROM tablename where date='"+drop_date.SelectedValue+"'",connection_Object);
    myda.Fill(ds);
    drop_newsletter.DataSource = ds;
    drop_newsletter.DataValueField = "newsletter";
    drop_newsletter.DataBind();
    drop_newsletter.Items.Insert(0, new ListItem("Select", "0"));
    //This updates the panel Asynchronously
    UpdatePanel.Update();
}

如果您要使用 javascript: 您需要创建一个网络服务,以便您可以使用 ajax 调用来取回您的数据。然后,您将使用 javascript 将该数据绑定到第二个下拉列表。

【讨论】:

  • 没问题。你能把我的答案标记为正确吗
【解决方案2】:

我不确定您将其应用于标记代码是什么意思,您的代码现在看起来应该有两个下拉列表出现在您的表单上(在源视图中),当您选择第一个时( drop_date)它应该回发并调用drop_date_SelectedIndexChanged()(前提是autopostback 属性在drop_date 上设置为true)。

一种更巧妙的方法是考虑以下方法之一:

  • 考虑使用类似 Ajax Toolkit 的 Cascading Drop Downs 控件。有一个完整的演练将它与数据库 here 集成。

  • 如果您想保留上述代码,另一种选择就是使用Update Panel

【讨论】:

    【解决方案3】:

    您可以阅读“使用两个下拉列表进行主/详细过滤”(C#)的教程

    检查该链接:http://www.asp.net/web-forms/tutorials/data-access/masterdetail/master-detail-filtering-with-two-dropdownlists-cs

    【讨论】:

      猜你喜欢
      • 2015-10-27
      • 1970-01-01
      • 2021-07-04
      • 1970-01-01
      • 1970-01-01
      • 2022-01-14
      • 1970-01-01
      • 1970-01-01
      • 2014-01-09
      相关资源
      最近更新 更多