C# windows form databinding avec datagrid + combox dans les colonnes.

Soyez le premier à donner votre avis sur cette source.

Vue 33 673 fois - Téléchargée 2 984 fois

Description

Voici un petit exemple de DataBinding qui a été développé avec le RAD SharpDevelop (version Fidalgo 1). Le dossier contient également un Export pour visual studio mais je ne sais pas si ça marche !!

Désolé il n'y a pas beaucoup de commentaires... mais si vous avez des questions n'hésitez pas -;)

Le prg met montre comment faire pour insérer une liste de choix (ComboBox) dans une cellule du DataGrid en utilisant deux classes qui ont été récuperées sur le NET.

Voici le code d'ouverture. (mise en Place du DataGridTableStyle... etc)

Source / Exemple :


private void OpenDataBase()
{	

	this.myConnection.ConnectionString = util.connectionPath;

	this.myCommand.CommandText = "SELECT * FROM Livre";
	this.myDataAdapter.SelectCommand = this.myCommand;
	this.myDataAdapter.Fill(this.myDataSet, "Livre");

	this.myCommand.CommandText = "SELECT IDPersonne, Nom & ' ' & Prenom as NP FROM Personne ORDER BY Nom ASC";
	this.myDataAdapter.SelectCommand = this.myCommand;
	this.myDataAdapter.Fill(this.myDataSet, "Personne");

	this.myCommand.CommandText = "SELECT * FROM Bibliotheque";
	this.myDataAdapter.SelectCommand = this.myCommand;
	this.myDataAdapter.Fill(this.myDataSet, "Bibliotheque");

	DataGridTableStyle tableStyle = new DataGridTableStyle();
	DataTable dataTable  = myDataSet.Tables["Bibliotheque"];
	tableStyle.MappingName = "Bibliotheque";
	tableStyle.RowHeadersVisible = true;
	tableStyle.RowHeaderWidth = 400;

	for (int i = 0; i < dataTable.Columns.Count; i++)
	{
		switch (i)
		{
			case 0:
				DataGridTextBoxColumn column_0 = new DataGridTextBoxColumn();
				column_0.MappingName = "IdSortie";
				column_0.HeaderText = "N";
				column_0.Width = 0;
				tableStyle.GridColumnStyles.Add(column_0);
				break;
			case 1:  
				DataGridComboBoxColumn column_1 = new DataGridComboBoxColumn();

				column_1.MappingName = "IdLivre";
				column_1.HeaderText = "Nom du livre";
				column_1.Width = 150;
				column_1.myComboBox.DataSource = myDataSet.Tables["Livre"].DefaultView;
				column_1.myComboBox.DisplayMember = "NomDuLivre";
				column_1.myComboBox.ValueMember = "IdLivre";
				tableStyle.PreferredRowHeight = column_1.myComboBox.Height;
				tableStyle.GridColumnStyles.Add(column_1);
				break;

			case 2:  
				DataGridComboBoxColumn column_2 = new DataGridComboBoxColumn();

				column_2.MappingName = "IdPersonne";
				column_2.HeaderText = "Nom et Prénom";
				column_2.Width = 150;
				column_2.myComboBox.DataSource = myDataSet.Tables["Personne"].DefaultView;
				column_2.myComboBox.DisplayMember = "NP";
				column_2.myComboBox.ValueMember = "IdPersonne";
				tableStyle.PreferredRowHeight = column_2.myComboBox.Height;
				tableStyle.GridColumnStyles.Add(column_2);
				break;
		
			case 3:
				DataGridTextBoxColumn column_3 = new DataGridTextBoxColumn();
				
				column_3.MappingName = "DateSortie";
				column_3.HeaderText = "Date de sortie";
				column_3.Width = 90;
				tableStyle.GridColumnStyles.Add(column_3);
				break;
		}	
	}

	this.myDataGrid.TableStyles.Clear();
	this.myDataGrid.TableStyles.Add(tableStyle);
	this.myDataGrid.DataSource = dataTable;
}

Conclusion :


bonne prog @ tous. VIC

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

titofmaj0603
Messages postés
5
Date d'inscription
lundi 24 mai 2004
Statut
Membre
Dernière intervention
7 juillet 2004
-
Bonjour,

Je travaille sur une application VB.NET, une winform. Je cherche à placer une ComboBox dans une cellule de datagrid donc ca tombe plutot bien. Mais le probleme c'est que je n'ai pas la classe "DataGridComboBoxColumn" j'ai bien "DataGridTextBoxColumn" ou d'autre mais pas celle là, ni "DataGridListBoxColumn"... Est ce normal ? Il faut rajouter qq chose ?

Merci d'avance
@+

Titof.
VicoLaChips2
Messages postés
439
Date d'inscription
dimanche 20 janvier 2002
Statut
Membre
Dernière intervention
2 février 2010
1 -
Salut,

La classe DataGridComboxColumn.cs est une classe qui hérite de l'objet DataGridTextBoxColumn en y ajoutant justement la fonctionnalité du combo. Mais l'objet n'existe pas dans le framework actuel. Donc il te faudra convertir le fichier DataGridComboxColumn.cs qui se trouve dans le source en un fichier vb (quoi que je n'en soit pas sur... je débute en .net) pour pouvoir l'utiliser dans ton projet ou alors compiler le fichier DataGridComboxColumn.cs en un fichier dll pour pouvoir l'utiliser comme un contrôle.


@+
VIC
abou11
Messages postés
3
Date d'inscription
mardi 13 juillet 2004
Statut
Membre
Dernière intervention
28 juillet 2004
-
salut,
je vient de tester ton prog et ca fonctionne bien :) , j'ai une petite question:
si tu as une base avec des enregistrements deja fait, comment tu fais pour les mettre dans la datagrid avec les combobox pointant sur les bonnes valeurs.

merci

abou11
tmcuh
Messages postés
463
Date d'inscription
dimanche 22 décembre 2002
Statut
Membre
Dernière intervention
18 avril 2009
-
Tu sais pas faire une application qui marche, sans devoir bidouiller dedans, car là je vois que des classes, faut encore intégrer tout les controles, la base et autres... avec un formulaire ça serait mieux ;)

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.