2017-10-14 38 views
-2

Je suis nouveau dans Dapper. Lorsque l'utilisateur sélectionne un nom d'élément dans la zone de texte déroulante et cliquez sur le bouton Sélectionner, cette ligne particulière doit être ajoutée dans datagridview.TextBox.Text ne fonctionne pas dans Dapper

Le problème est que txt_sell_item.Text ne récupère pas la valeur et l'ajoute dans datagridview. Au lieu de cela, si j'écris simplement ItemName = 'pain' dans ma requête cela fonctionne. (« Pain » est un élément dans ma ItemName colonne dans la base de données)

[Je lie aussi mon datagridview avec ordre de classe]

Mon Bouton de sélection Cliquez sur l'événement est.

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(); 
    } 

ma commande est ... Classe

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; } 
    } 
} 

Mon GUI est

Répondre

2

Cela n'a rien à voir avec Dapper, mais il est une erreur sur votre chaîne de requête .
Vous devriez écrire comme (juste ajouter le $ initial pour comprendre votre txt_sell_item.Text)

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

Cependant, vous ne concaténer ensemble des chaînes pour construire commande SQL, mais vous devez utiliser une requête paramétrées.

Ainsi, le texte de la requête devient

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

et la commande est

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

caractère inattendu '$' erreur se produit quand j'ajouter $ initiale. –

+0

Quelle version de VS utilisez-vous? – Steve

+0

Mais votre deuxième option de requête paramétrée a fonctionné pour moi et il prend la valeur de txt_sell_item.Text .. Merci :) –