2013-10-28 74 views
0

我是.net中的新成员。我有以下的代码,我知道这是不正确的:根据下拉选择将数据从sql数据库显示到标签

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(); 
     } 

     } 

数据绑定到下拉的伟大工程,但是当我选择特定的名称,标签显示什么。任何人都可以解释我做错了什么吗? 谢谢!

回答

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() 

UPDATE

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

  • 如果要按ID搜索,请更改SQL。
  • 如果要按名称搜索,请将属性更改为SelectedItem(它将成为DataRow)。然后深入到名称。
+0

感谢您的提示,我只是改变了我的代码,但它仍然无法正常工作。 – Eugene

+1

查看更新。 –

+0

我真的很感谢你的帮助!现在它可以工作。但是我面临另一个问题。它只显示下拉列表中第一个人的信息。当我更改名称时,标签中的信息不会改变。你能看看代码吗? – Eugene

相关问题