2013-12-13 19 views
0

我有一個代碼來獲取數據庫從組合框確定的所有值到datagridview。 但是,每當我運行它,我得到無效列名ListU.SelectedValue,並且多部分標識符「System.Data.DataRowView」無法綁定,如果我使用ListU.SelectedItem。從數據庫中檢索值由組合框到gridview時的錯誤

我哪裏出錯了?我猜這是我的代碼或它是我的表。

private void User_Load(object sender, EventArgs e) 
{ 
      SqlDataAdapter daSearch = new SqlDataAdapter("SELECT cName FROM ComDet", conn); 
      DataTable dt1 = new DataTable(); 
      ListU.DataSource = dt1; 
      daSearch.Fill(dt1); 
      ListU.ValueMember = "cName"; 
      ListU.DisplayMember = "cName"; 
      ListU.DropDownStyle = ComboBoxStyle.DropDownList; 
      ListU.Enabled = true; 
} 

和按鈕的代碼 -

private void searchBtn_Click(object sender, EventArgs e) 
{ 
    SqlConnection conn = new SqlConnection(); 
    conn.ConnectionString = "Data Source=PEWPEWDIEPIE\\SQLEXPRESS;Initial Catalog=master;Integrated Security=True"; 
    conn.Open(); 

    SqlDataAdapter daS = new SqlDataAdapter("select cName, cDetails, cDetails2 from ComDet where cName =" + ListU.SelectedValue, conn); 
    DataTable dts3 = new DataTable(); 
    daS.Fill(dts3); 
    dataGridView1.DataSource = dts3.DefaultView; 
    dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect; 

    conn.Close(); 
} 
+0

我編輯了你的標題。請參閱:「[應該在其標題中包含」標籤「](http://meta.stackexchange.com/questions/19190/)」,其中的共識是「不,他們不應該」。 –

+0

嘗試用'SqlDataAdapter daS = new SqlDataAdapter(「選擇cName,cDetails,cDetails2從ComDet其中cName ='」+(string)ListU.SelectedItem +「'」,conn);' – Jigsore

+0

@Jigsore - 沒有工作.. –

回答

0

你應該使用的SqlParameter ...有助於防止SQL注入的問題,也是對失蹤的報價......這樣的:

SqlDataAdapter daS = new SqlDataAdapter("select cName, cDetails, cDetails2 from ComDet where cName = @name", conn); 
daS.SelectCommand.Parameters.Add("@name", SqlDbType.VarChar).Value = ListU.SelectedValue; 

這假設cName是一個字符串...如果不是,你將不得不改變SqlDbType ...

+0

好吧.. nvm ..得到它的工作..:D謝謝..:D –