2013-05-14 161 views
0

我有两个列表框,其相应的数据存储在SQL Server中。我能够从SQL Server中加载ListBox1的数据。但是我无法将所选项目的相应数据从ListBox 1填充到ListBox 2中。但是,当我单击Listbox 1中的项目时,Listbox 2中没有显示任何数据。在列表框中选择项目

private void Form2_Load(object sender, EventArgs e) 
     { 
      SqlConnection cs = new SqlConnection(@"Data Source=.\sqlexpress;Initial Catalog=details;User ID=sa;[email protected]"); 
      SqlCommand cmd = new SqlCommand(); 
      cmd.Connection = cs; 
      cmd.CommandType = CommandType.Text; 
      cmd.CommandText = "SELECT memo FROM new"; 
     DataSet objDS = new DataSet(); 
     SqlDataAdapter da = new SqlDataAdapter(); 
     da.SelectCommand = cmd; 

     // cs.Open(); 
     da.Fill(objDS); 

     //cs.Close(); 

     listMemo.ValueMember = "memo"; 
     listMemo.DisplayMember = "memo"; 
     listMemo.DataSource = objDS.Tables[0]; 

    } 


    private void listMemo_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     // string memo = Convert.ToInt32(listMemo.SelectedValue.ToString()); 
     if (listMemo.SelectedValue.ToString() != "") 
     { 
      string memo = Convert.ToString(listMemo.SelectedValue.ToString()); 
      filltext(memo); 
     } 


    } 


    private void filltext(string memo) 
    { 
     SqlConnection cs = new SqlConnection(@"Data Source=.\sqlexpress;Initial Catalog=details;User ID=sa;[email protected]"); 
     SqlCommand cmd = new SqlCommand(); 
     cmd.Connection = cs; 
     cmd.CommandType = CommandType.Text; 
     cmd.CommandText = "SELECT text FROM new WHERE memo = '"+ listMemo.SelectedValue.ToString() +"'" ; 
     //cmd.Parameters.AddWithValue("@memo", listMemo); 

     DataSet objDS = new DataSet(); 
     SqlDataAdapter da = new SqlDataAdapter(); 
     da.SelectCommand = cmd; 

     // cs.Open(); 
     da.Fill(objDS); 

    // cs.Close(); 

     if (objDS.Tables[0].Rows.Count >0) 
     { 
      listText.ValueMember = "text"; 
      listText.DisplayMember = "text"; 
      listText.DataSource = objDS.Tables[0]; 

     } 

    } 
+0

注意:你应该配置你的SqlConnection对象。 – 2013-05-14 15:03:34

+0

你没有在'filltext'中使用'memo'参数。相反,你正在从'listMemo'重新获取字符串。 – 2013-05-14 15:04:42

+0

另外,你是否独立验证过你的SQL查询返回了什么? – 2013-05-14 15:05:14

回答

0
  if (dt.Rows.Count > 0) 
      { 
       objDS.Tables.Add(dt); 
       ListBox1.DataSource = ds.Tables[0]; 
       ListBox1.DataTextField = "text";// display member 
       ListBox1.DataValueField = "";// Id 
       ListBox1.DataBind(); 
      } 

绑定列表框中..!