2017-10-14 10 views
-2

Dapper에서 새로운 기능입니다. 사용자가 드롭 다운 스타일 텍스트 상자에서 항목 이름을 선택하고 선택 버튼을 클릭하면 해당 특정 행이 datagridview에 추가되어야합니다.Dapper에서 TextBox.Text가 작동하지 않습니다.

문제는 txt_sell_item.Text가 값을 다시 검색하지 않고 datagridview에 추가한다는 것입니다. 대신 내 쿼리에서 ItemName = 'bread'이라고 쓰면 작동합니다.

내 선택 버튼을 클릭 이벤트가 [나는 또한 주문 클래스 내 DataGridView에 바인딩 ('빵'데이터베이스 내 항목 이름 열에서 항목입니다).

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

이 말끔와는 아무 상관이없는 것입니다 ...하지만, 그것은 당신의 쿼리 문자열에 오류가 .
당신이 함께 SQL 명령을 구축하는 문자열을 연결하지 않는다 그러나 당신은 (당신의 txt_sell_item.Text을 이해하기 위해 초기 $ 추가)로

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

그것을 작성해야하지만 당신은 매개 변수가있는 쿼리를 사용해야합니다.

그래서 쿼리 텍스트는

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

그러나 Parametrized Query의 두 번째 옵션은 나를 위해 일했으며 txt_sell_item.Text에서 가치가 있습니다. Thanks :) –