Je suis nouveau dans Dapper. Lorsque l'utilisateur sélectionne un nom d'élément dans la zone de texte de style déroulant et clique sur Sélectionner le bouton, cette ligne particulière doit être ajoutée dans la grille de données.
Le problème est que txt_sell_item.Text ne retrive pas la valeur et l'ajoute dans la grille de données. Au lieu de cela, je viens d'écrire ItemName = 'bread' dans ma requête, cela fonctionne. ('pain' est un élément de ma colonne ItemName dans la base de données)
[Je lie également mon datagridview à la classe de commande]
Mon bouton Select Click Event 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 classe de commande est ...
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 interface graphique est
Cela n'a rien à voir avec Dapper, mais c'est une erreur sur votre chaîne de requête.
Vous devriez l'écrire comme (en ajoutant simplement 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énerez pas ensemble des chaînes pour générer la commande sql, mais vous devez utiliser une requête paramétrée.
Ainsi, le texte de la requête devient
string query = "SELECT *FROM tbl_ItemDetail WHERE ItemName=@ItemName";
et la commande est
ordersBindingSource.DataSource = db.Query<Orders>(query, new {ItemName = txt_sell_item.Text});