2013-10-28 92 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

相關問題