数据库到DropDownList和AutoPostBack到Label

时间:2011-01-25 09:38:32

标签: c# asp.net sql drop-down-menu label

我有这样的代码

    protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
            {
                string strConnectionString = ConfigurationManager.ConnectionStrings["SqlServerCstr"].ConnectionString;

                SqlConnection myConnection = new SqlConnection(strConnectionString);
                myConnection.Open();
string musisim = DropDownList1.SelectedItem.Value;

                SqlCommand cmd = new SqlCommand("select B.HESAP_NO FROM  YAZ..MARDATA.S_TEKLIF B WHERE B.MUS_K_ISIM = DropDownList1.SelectedItem.Value", myConnection);

                Label1.Text = cmd.ExecuteReader().ToString();

                myConnection.Close();

我的客户名称为“MUS_K_ISIM”,他的号码为“HESAP_NO”

我想要的只是,(autopostback是真的)自动获取标签“HESAP_NO”,其中包含在Dropdownlist中具有此号码“MUS_K_ISIM”的人。

我该怎么做?

错误:描述:执行当前Web请求期间发生了未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

4 个答案:

答案 0 :(得分:4)

您的数据库对您的ASP页面或控件一无所知;-)因此您需要重新编写SQL语句 - 作为第一个修订版,您可以更改它:

SqlCommand cmd = new SqlCommand("select B.HESAP_NO FROM  YAZ..MARDATA.S_TEKLIF B WHERE B.MUS_K_ISIM = '" + DropDownList1.SelectedItem.Value + "'", myConnection);

以便在下拉列表中选择的名称将添加到SQL查询中。

展望未来,最好使用Parameterized QueryStored procedure进行此类操作。

HTH。

答案 1 :(得分:1)

您只需使用像这样的参数化查询

在查询表名YAZ..MARDATA.S_TEKLIF中可能还有一个拼写错误,它可能是'YAZ.MARDATA.S_TEKLIF'

更新了代码

string strConnectionString = ConfigurationManager.ConnectionStrings["SqlServerCstr"].ConnectionString;

        using (SqlConnection myConnection = new SqlConnection(strConnectionString))
        {
            string query = "select B.HESAP_NO FROM  YAZ.MARDATA.S_TEKLIF B WHERE B.MUS_K_ISIM = @selectedItem";
            using (SqlCommand cmd = new SqlCommand(query, myConnection))
            {
                cmd.Parameters.AddWithValue("@selectedItem", DropDownList1.SelectedValue.ToString());
                myConnection.Open();
                using (SqlDataReader dr = cmd.ExecuteReader())
                {
                    if (dr.HasRows)
                    {
                        Label1.Text = dr["B.HESAP_NO"].ToString();
                    }
                    dr.Close();
                }
            }
            myConnection.Close();
        }

答案 2 :(得分:0)

SqlCommand cmd = new SqlCommand("select B.HESAP_NO FROM  YAZ..MARDATA.S_TEKLIF B WHERE B.MUS_K_ISIM = DropDownList1.SelectedItem.Value", myConnection);

你是否对文本进行了硬编码?,你需要传递我认为的选定值,

中的那个
musisim

答案 3 :(得分:-1)

无需使用代码连接到DB。您可以使用一行代码完成所有这些操作。

添加一个SqlDataSource并使用您需要的SQL命令对其进行配置。

将DropDown连接到SqlDataSource,配置应该连接到文本字段的列以及应该连接到Value字段的列。

在你的函数DropDownList1_SelectedIndexChanged

这样做:

 Label1.Text = DropDownList1.SelectedValue();