comment obtenir datagridview ligne actuelle valeur de la colonne?
J'ai un winform qui a un gridview qui est le remplissage par le biais d'une procédure stockée la procédure stockée est
ALTER PROCEDURE [dbo].[spGetAllCustumer]
AS
SET NOCOUNT ON
SET XACT_ABORT ON
BEGIN TRAN
BEGIN
SELECT Customer.CustID, Customer.CustName, Customer.CompanyName, Customer.CompanyRealtion, Contract.ContractID, Contract.ContractDate,
'$'+ CONVERT(varchar,Contract.totalPayment,1), '$'+ CONVERT(varchar,Contract.monthlyInstallment,1), '$'+ CONVERT(varchar,Contract.totalCommission,1), Contract.ContractDuration, Contract.PaymentMode, Contract.Description,
Customer.Disable
FROM Customer INNER JOIN
Contract ON Customer.CustID = Contract.CustID
WHERE (Customer.Disable = 'false')
END
commit
et je suis le remplissage de la gridview dynamiquement avec ce code
con.ConnectionString = "Data Source=MRDEVELOPER;Initial Catalog=Crystal_Accounts;Integrated Security=True";
SqlCommand com = new SqlCommand();
com.Connection = con;
com.CommandText = "spGetAllCustumer";
com.CommandType = CommandType.StoredProcedure;
com.Parameters.Clear();
con.Open();
SqlDataReader dr = com.ExecuteReader();
DataTable dt = new DataTable();
dt.Load(dr);
dataGridView1.DataSource = dt;
Je veux choisir le custID, contractID, totalpayment de la selectedRow je ne sais pas comment je peux le faire et la deuxième question est à propos de la monnaie signe que j'ai utilisé dans le storedprocedure est-il le droit chemin ou quelle est la meilleure façon de le faire?
OriginalL'auteur mepk | 2012-05-03
Vous devez vous connecter pour publier un commentaire.
Comme volody souligné, vous pouvez utiliser le SelectedRows propriété pour obtenir tout ce dont vous avez besoin. Cependant, vous pourriez ne pas savoir les indices des colonnes en question (même si elles sont généralement générés dans le même ordre que la requête, alors assurez-vous de faire un alias de colonnes correctement), vous pouvez utiliser le texte de la colonne par l'intermédiaire de la chaîne de l'accès sur les cellules:
L'autre chose que je vous suggère de faire est de laisser la mise en forme jusqu'à la DataGridView à la place de la requête SQL. C'est généralement les meilleures pratiques lors de la séparation de vos données d'accès/de la couche logique métier de votre présentation/couche d'INTERFACE utilisateur. De la façon dont vous le faire est de spécifier un
DataFormatString
sur la DataTable est DataColumn pour les colonnes en question. Dans ce cas particulier, vous voulez faire cela:L'inconvénient de tout faire dans le code, c'est que vous n'obtenez pas au moment de la conception de soutien, ce qui signifie que vous avez à tester tout au cours de l'exécution (qui pourrait être une perte de temps). C'est l'une des raisons de l'ORM sont utilisés (comme le VS Concepteur de DataSet, LINQ2SQL designer, EntityFramework, etc), de sorte que vous avez au moment de la conception de support de requêtes de base de données/objets. C'est encore plus facile de lier ces données directement des catégories de contrôles d'INTERFACE utilisateur au moment de la conception et de déterminer tout sur la couche de présentation avant même l'exécution du code (comme les colonnes qui seront cachés, tous les autres colonnes calculées, colonne spéciale mise en forme conditionnelles, les lignes/colonnes/cellules de la peinture, etc).
Juste mon 0,02 $en vaut la peine.
désolé datareader
J'ai juste pris votre code et ajout de ces trois lignes. Juste être sûr de bien l'alias de vos colonnes, sinon de les trouver, va être rien, mais la conjecture à la couche d'INTERFACE utilisateur.
DataFormatingString ne fonctionne pas. donne ligne rouge?
DataFormatString
. Utiliser Intellisense pour obtenir la propriété exacte que vous devez définir.OriginalL'auteur SPFiredrake
Utilisation SelectedRows collection
OriginalL'auteur volody
Pour obtenir les valeurs que vous l'emporterait sur l'événement select.
Vous pouvez également créer des colonnes dans votre code...
À l'aide d'un TemplateField vous pourriez évaluer votre les montants en dollars à l'étiquette ou à un autre contrôle à l'aide de la syntaxe suivante
Cependant à aller dans cette voie, vous auriez pour l'installation de tous les domaines et pas seulement un.
OriginalL'auteur Brandon