0

我是.net 的新手。我有以下代码,我知道它不正确:

protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
        {
            SqlConnection conn = new SqlConnection("Connection");
            SqlCommand cmd = new SqlCommand("SELECT * FROM Users ORDER BY FirstName", conn);

            conn.Open();
            SqlDataReader rd = cmd.ExecuteReader();
            ddlUsers.DataValueField = "ID";
            ddlUsers.DataTextField = "FirstName";
            ddlUsers.DataSource = rd;
            ddlUsers.DataBind();
            rd.Close();

            SqlCommand cmd1 = new SqlCommand("SELECT [LastName], [Email], [Phone] FROM [Users] WHERE ([FirstName] = @FirstName)", conn);
            cmd1.Parameters.AddWithValue("@FirstName", ddlUsers.SelectedItem.ToString());
            SqlDataReader rd1 = cmd1.ExecuteReader();
            while (rd1.Read())
            {
                lblPhoneShow.Text = rd1["Phone"].ToString();
                lblEmailShow.Text = rd1["Email"].ToString();
                lblLNShow.Text = rd1["LastName"].ToString();
            }
            conn.Close();
        }

        } 

将数据绑定到下拉列表效果很好,但是当我选择某个名称时,标签什么也不显示。谁能解释我做错了什么?谢谢!

4

1 回答 1

1

您似乎没有执行查询。

尝试这个:

SqlCommand cmd1 = new SqlCommand("Select (Phone, LastName, Email) from users where FirstName = @FirstName", conn);
cmd.Parameters.AddWithValue("@FirstName", ddlUsers.SelectedValue.ToString());
rd = cmd.ExecuteReader()

更新

下拉列表的是 ID。您正在将数据库中的 FirstName 与此值进行比较。名字永远不会匹配 ID。

  • 如果要按 ID 搜索,请更改 SQL。
  • 如果要按名称搜索,请将属性更改为 SelectedItem(它将是一个 DataRow)。然后深入到名称。
于 2013-10-28T20:17:32.117 回答