簡體   English   中英

根據所選的第一個下拉列表項加載第二個下拉列表項

[英]Load 2nd drop down list items based on 1st selected drop down list item

                   <div class="form-group col-lg-12">
                        <label for="ddl1">1:</label>
                        <asp:DropDownList ID="ddl1" name="ddl1" CssClass="form-control" runat="server"  />
                    </div>

                    <div class="form-group col-lg-12">
                        <label for="ddl2">1:</label>
                        <asp:DropDownList ID="ddl2" name="ddl2" CssClass="form-control" runat="server" required />
                    </div>

我試圖根據我選擇的ddl1的值來獲取ddl2的下拉列表項。 因此,“ if”函數和void Get1和Get2。 注意:每個ddl的數據都來自數據庫中的一個表。

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

    #region "Function"
    if (ddl1.SelectedItem.Value == "1")
    {
        Get1();
    }
    else if (1.SelectedItem.Value == "2")
    {
        Get2();
    }
    #endregion
}

    #region "Function"
    if (ddl1.SelectedItem.Value == "1")
    {
        Get1();
    }
    else if (ddl1.SelectedItem.Value == "2")
    {
        Get2();
    }
 #endregion

 void Get1()
{
    con.Open();
    SqlCommand cmd = new SqlCommand();
    cmd.Connection = con;
    cmd.CommandText = "SELECT ID, Category FROM Table1";
    SqlDataReader dr = cmd.ExecuteReader();
    ddl2.DataSource = dr;
    ddl2.DataTextField = "Category";
    ddl2.DataValueField = "Category";
    ddl2.DataBind();
    con.Close();

    ddl2.Items.Insert(0, new ListItem(" ", ""));
}

void Get2()
{
    con.Open();
    SqlCommand cmd = new SqlCommand();
    cmd.Connection = con;
    cmd.CommandText = "SELECT ID, Category FROM Table2";
    SqlDataReader dr = cmd.ExecuteReader();
    ddl2.DataSource = dr;
    ddl2.DataTextField = "Category";
    ddl2.DataValueField = "Category";
    ddl2.DataBind();
    con.Close();

    ddl2.Items.Insert(0, new ListItem(" ", ""));
} 
void ddlGet()
{
    con.Open();
    SqlCommand cmd = new SqlCommand();
    cmd.Connection = con;
    cmd.CommandText = "SELECT ID, Category FROM Table0";
    SqlDataReader dr = cmd.ExecuteReader();
    ddl1.DataSource = dr;
    ddl1.DataTextField = "Category";
    ddl1.DataValueField = "Category";
    ddl1.DataBind();
    con.Close();

    ddl1.Items.Insert(0, new ListItem(" ", ""));
}

protected void ddl1_SelectedIndexChanged(object sender, EventArgs e)
{
    if (ddl1.SelectedItem.Value == "1")
    {
        Get1();
    }
    else if (ddl1.SelectedItem.Value == "2")
    {
        Get2();
    }
}

下拉菜單的selectedindex已更改。只需雙擊下拉菜單並在其中復制代碼即可。 那么它應該工作正常。

public void ddl1_selectedIndexChanged(sender,e){ //your code here }

另外,您在代碼中兩次提到了Get2()。 是復制錯誤還是您沒有注意到代碼? 這可能是為什么即使更改了選定值也要綁定相同值的問題

使用OnSelectedIndexChanged asp:DropDownList OnSelectedIndexChanged事件

protected void ddl1_SelectedIndexChanged(object sender, EventArgs e)
{
  if (ddl1.SelectedItem.Value == "1")
  {
    Get1();
  }
  else if (ddl1.SelectedItem.Value == "2")
  {
    Get2();
  }
}

另外:

  ddl1.DataTextField = "Category";
  ddl1.DataValueField = "ID";

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM