2017-10-14 67 views
-2

我是Dapper中的新成員。當用戶在下拉式文本框中選擇一個項目名稱並單擊選擇按鈕時,那麼該特定的行應該添加到datagridview中。TextBox.Text在Dapper中不起作用

問題是txt_sell_item.Text沒有檢索值並將其添加到datagridview中。相反,如果我只在我的查詢中寫入ItemName ='bread',它就可以工作。 (「麪包」是在我的數據庫列ITEMNAME項目)

[我也結合我與Order類的DataGridView]

我的選擇按鈕的Click事件是。

using (IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings["Connection"].ConnectionString)) 
    { 
     if (db.State == ConnectionState.Closed) 
      db.Open(); 
      string query = "SELECT *FROM tbl_ItemDetail WHERE ItemName='{txt_sell_item.Text}'"; 
      ordersBindingSource.DataSource = db.Query<Orders>(query, commandType: CommandType.Text); 
      dataGridView1.Refresh(); 
    } 

我的訂單類是...

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 

namespace test 
{ 
    public class Orders 
    { 
     public int ItemId  { get; set; } 
     public string ItemName { get; set; } 
     public string Brand  { get; set; } 
     public string Category { get; set; } 
     public int Quantity { get; set; } 
     public int Price  { get; set; } 
    } 
} 

我的GUI是

回答

2

這有什麼好做精緻小巧,但它是在你的查詢字符串錯誤。
你應該把它寫成(只需添加初始$瞭解您txt_sell_item.Text)

string query = $"SELECT * FROM tbl_ItemDetail WHERE itemName='{txt_sell_item.Text}'"; 

但是你不連接字符串來構建SQL命令在一起,但你需要使用參數化查詢。

所以查詢文本變得

string query = "SELECT *FROM tbl_ItemDetail WHERE [email protected]"; 

和命令是

ordersBindingSource.DataSource = db.Query<Orders>(query, new {ItemName = txt_sell_item.Text}); 
+0

意外的字符當我添加初始$出​​現 '$' 錯誤。 –

+0

你使用什麼版本的VS? – Steve

+0

但是你的第二個參數化查詢選項適合我,它從txt_sell_item.Text中獲取價值。謝謝:) –

相關問題