如何在C#中基于级联下拉列表在文本框上显示固定数据?

How to display fixed data on textbox based on cascading dropdown list in C#?

我想知道如何根据用户选择的级联下拉列表显示固定数据?例如,我有3个下拉列表,在最后一个下拉列表中,如果用户选择"Yes",文本框将显示"Position is approved",如果用户选择"No",文本框将显示"Position not approved" ].这是我的代码。不知道怎么办,求助

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

    }
}


private void FillPackage()
{
    string strConn = ConfigurationManager.ConnectionStrings["dbconnection"].ConnectionString;
    SqlConnection con = new SqlConnection(strConn);
    SqlCommand cmd = new SqlCommand();

    cmd.Connection = con;
    cmd.CommandType = CommandType.Text;
    cmd.CommandText = "SELECT TopID, ToPackage FROM TableTop1";
    DataSet objDs = new DataSet();
    SqlDataAdapter dAdapter = new SqlDataAdapter();
    dAdapter.SelectCommand = cmd;
    con.Open();
    dAdapter.Fill(objDs);
    con.Close();

    if (objDs.Tables[0].Rows.Count > 0)
    {
        ddl1.DataSource = objDs.Tables[0];
        ddl1.DataTextField = "ToPackage";
        ddl1.DataValueField = "TopID";
        ddl1.DataBind();
        ddl1.Items.Insert(0, "--Select--");

    }
    else
    {
        lblMsg.Text = "No Package found";
    }
}

private void FillPurpose(int TopID)
{
    string strConn = ConfigurationManager.ConnectionStrings["dbconnection"].ConnectionString;
    SqlConnection con = new SqlConnection(strConn);
    SqlCommand cmd = new SqlCommand();

    cmd.Connection = con;
    cmd.CommandType = CommandType.Text;
    cmd.CommandText = "SELECT PurposeID, Purpose FROM TablePurpose1 WHERE TopID =@TopID";
    cmd.Parameters.AddWithValue("@TopID", TopID);
    DataSet objDs = new DataSet();
    SqlDataAdapter dAdapter = new SqlDataAdapter();
    dAdapter.SelectCommand = cmd;
    con.Open();
    dAdapter.Fill(objDs);
    con.Close();

    if (objDs.Tables[0].Rows.Count > 0)
    {
        ddl2.DataSource = objDs.Tables[0];
        ddl2.DataTextField = "Purpose";
        ddl2.DataValueField = "PurposeID";
        ddl2.DataBind();
        ddl2.Items.Insert(0, "--Select--");
    }
    else
    {
        lblMsg.Text = "Please consult with focal person";
    }
}

private void FillReason(int PurposeID)
{
    string strConn = ConfigurationManager.ConnectionStrings["dbconnection"].ConnectionString;
    SqlConnection con = new SqlConnection(strConn);
    SqlCommand cmd = new SqlCommand();
    cmd.Connection = con;
    cmd.CommandType = CommandType.Text;
    cmd.CommandText = "SELECT ReasonID, Reason FROM TableReason1 WHERE PurposeID =@PurposeID";
    cmd.Parameters.AddWithValue("@PurposeID", PurposeID);
    DataSet objDs = new DataSet();
    SqlDataAdapter dAdapter = new SqlDataAdapter();
    dAdapter.SelectCommand = cmd;
    con.Open();
    dAdapter.Fill(objDs);
    con.Close();

    if (objDs.Tables[0].Rows.Count > 0)
    {
        ddl3.DataSource = objDs.Tables[0];
        ddl3.DataTextField = "Reason";
        ddl3.DataValueField = "ReasonID";
        ddl3.DataBind();
        ddl3.Items.Insert(0, "--Select--");
    }
    else
    {
        lblMsg.Text = "Please consult with focal person";
    }
}

由于您的代码段中有一个 Page_Load 方法,我认为您正在使用 asp.net 网络表单。如果是这种情况,您只需处理 DropDownList 组件在更改时发出的事件。

我是你的 c# 代码,你应该创建一个方法来处理在你的 DropDownList 中选择项目的事件,如下所示:

protected void ItemSelected(object sender, EventArgs e)
{
    if (ddl3.SelectedItem.Value == "Yes")
    {
        // Change text box text
    }
}

然后您只需将事件处理程序挂接到组件即可:

<asp:DropDownList ID="ddl3" runat="server" AutoPostBack="True" 
        onselectedindexchanged="ItemSelected">
    </asp:DropDownList>