简体   繁体   English

dropdownlist不从OnSelectedIndexChanged的表中获取值

[英]dropdownlist not fetching values from table on OnSelectedIndexChanged

am trying to fetch values from database table on dropdownlist value change and display them in textbox. 正在尝试从dropdownlist值更改的数据库表中获取值,并将其显示在文本框中。 While selecting any value from the dropdownlist the page is refreshing but no values are displaying in the textbox and following are the codes: 从下拉列表中选择任何值时,页面将刷新,但文本框中未显示任何值,以下是代码:

Default.aspx Default.aspx的

<asp:DropDownList ID="DropDownList1" runat="server" AppendDataBoundItems="true" OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged" AutoPostBack="true">
    <asp:ListItem Text="<Select Subject>" Value="0" />
</asp:DropDownList>

Default.aspx.cs Default.aspx.cs

 protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
    {
        string ddl2value = DropDownList1.SelectedValue.ToString();
        // fillDropdown3(ddl3, ddl2value);
        SqlConnection objConn2 = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);
        SqlCommand objCmd2;
        SqlDataReader objRdr2;
        //  String strCmd2;
        objConn2.Open();




        objCmd2 = new SqlCommand("SELECT code, rank, address FROM agen_mast WHERE name = " +
        "'" + ddl2value.ToString() + "'", objConn2);
        objRdr2 = objCmd2.ExecuteReader();



        while (objRdr2.Read())
        {

            TextBox9.Text = (string)objRdr2["code"].ToString();
            TextBox8.Text = (string)objRdr2["address"].ToString().ToUpper();
            TextBox10.Text = (string)objRdr2["rank"].ToString().ToUpper();
        }

        objRdr2.Close();
        objConn2.Close();
     //   Response.Write(ddl2value.ToString());
    }

You could try something like this: 您可以尝试这样的事情:

protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
    {
        if(DropDownList1.SelectedValue !="-1"){
        string ddl2value = DropDownList1.SelectedValue.ToString();
        SqlConnection objConn2 = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);
        SqlCommand objCmd2;
        SqlDataReader objRdr2;
        objConn2.Open();

        objCmd2 = new SqlCommand("SELECT code, rank, address FROM agen_mast WHERE name = " +
        "'" + ddl2value + "'", objConn2);
        objRdr2 = objCmd2.ExecuteReader();

        while (objRdr2.Read())
        {

            TextBox9.Text = (string)objRdr2["code"].ToString();
            TextBox8.Text = (string)objRdr2["address"].ToString().ToUpper();
            TextBox10.Text = (string)objRdr2["rank"].ToString().ToUpper();
        }

        objRdr2.Close();
        objConn2.Close();
        }
    }

And add a dummy ListItem with Value -1 as the first item in the DropDownList1 in the .aspx side. 并添加一个虚拟ListItemValue -1在作为第一个项目DropDownList1.aspx侧。 By the way, make sure you are sending the correct parameter to SqlCommand . 顺便说一句,请确保将正确的参数发送到SqlCommand Right now you are looking for a record with Name = 0 . 现在,您正在寻找Name = 0的记录。 Also, ddl2Value is already of type string so you don't need to call ToString() inside SqlCommand 另外, ddl2Value已经是string类型,因此您无需在SqlCommand调用ToString()

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM