从onselectindexchanged填写下拉列表

时间:2015-07-02 05:50:59

标签: c# asp.net

我正在使用asp.net和c#

我正在使用像dd1,dd2

这样的2下拉列表

如何通过dd1 onselectindexchanged

填充第二个下拉列表dd2

我的代码是,

 <asp:DropDownList ID="ddMedType" runat="server" CssClass="drop" AutoPostBack="true" OnSelectedIndexChanged="ddMedType_SelectedIndexChanged">
                <asp:ListItem Value="0">-Select-</asp:ListItem>
                <asp:ListItem Value="Tablet">Tablet</asp:ListItem>
                <asp:ListItem Value="Tonic">Tonic</asp:ListItem>
                <asp:ListItem Value="Capsules">Capsules</asp:ListItem>
                <asp:ListItem Value="DispoTab">Disposable Tablet</asp:ListItem>
            </asp:DropDownList>

 <asp:DropDownList ID="ddMedName" runat="server" CssClass="drop" >
                <asp:ListItem Value="0">-Select-</asp:ListItem>
            </asp:DropDownList>


protected void ddMedType_SelectedIndexChanged(object sender, EventArgs e)
    {
        string MedType = ddMedType.SelectedItem.Text;
        string str = "select MedicineName,MedicineId from MedicineMaster where MedicineType = '" + MedType + "'";
        cmd = new SqlCommand(str, con);
        SqlDataReader reader = cmd.ExecuteReader();
        while (reader.Read())
        {

             ddMedName.SelectedValue= reader["MedicineId"].ToString();


        }
    }

此处条件返回2项,但dropdownlist dd2仅返回1 ...

3 个答案:

答案 0 :(得分:0)

尝试在DropdownList中添加项目..

DropDownList1.Items.Add(new ListItem(reader["MedicineId"].ToString(), reader["MedicineId"].ToString()));

答案 1 :(得分:0)

您正在设置SelectedValue,这并不意味着您要在下拉列表中添加或删除项目

DataTable medicines= new DataTable();

using (SqlConnection con = new SqlConnection(connectionString))
{

    try
    {
        SqlDataAdapter adapter = new SqlDataAdapter("select MedicineName,MedicineId from MedicineMaster where MedicineType = '" + MedType + "'", con);
        adapter.Fill(subjects);

        ddMedName.DataSource = subjects;
        ddMedName.DataTextField = "MedicineName";
        ddMedName.DataValueField = "MedicineId";
        ddMedName.DataBind();
    }
    catch (Exception ex)
    {
        // Handle the error
    }

}

// Add the initial item - you can add this even if the options from the
// db were not successfully loaded
ddMedName.Items.Insert(0, new ListItem("-Select-", "0"));

您也可以使用阅读器进行如下操作:

ddMedName.Items.Clear();
ddMedName.Items.Add(new ListItem("-Select-", "0"));
while (reader.Read())
{
  ddMedName.Items.Add(new ListItem(reader["MedicineName"].ToString(), reader["MedicineId"].ToString());
}

答案 2 :(得分:0)

以下一种解决方案可以帮助您:

protected void ddMedType_SelectedIndexChanged(object sender, EventArgs e)
        {
            string MedType = ddMedType.SelectedItem.Text;
            string str = "select MedicineName,MedicineId from MedicineMaster where MedicineType = '" + MedType + "'";
            cmd = new SqlCommand(str, con);
            SqlDataReader reader = cmd.ExecuteReader();
            ddMedName.DataSource = reader;
            ddMedName.DataTextField = "MedicineName";
            ddMedName.DataValueField = "MedicineId";
            ddMedName.DataBind();
        }