2017-10-14 10 views
-2

Dapperで新しくなっています。ユーザーがドロップダウンスタイルのテキストボックスでアイテム名を選択してボタンをクリックすると、その特定の行がdatagridviewに追加されます。DapperでTextBox.Textが機能しない

問題は、txt_sell_item.Textは値を取得してdatagridviewに追加しないという問題です。代わりに私はちょうど私のクエリでItemName = 'パン'を書く場合は動作します。

マイセレクトボタンクリックイベントがある[私も注文クラスで私のDataGridViewをバインド](「パン」はデータベース内の私のItemNameの列の項目です)。

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

である。これは、Dapperのとは何の関係もありませんが、それはあなたのクエリ文字列でのエラーです。

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

を(ちょうどあなたの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

しかし、あなたの第2のオプションは、私のために働きました。それはtxt_sell_item.Textから価値があります。ありがとう:) –

関連する問題