[ASP.NET] Binder une table a un datagrid

Signaler
Messages postés
85
Date d'inscription
jeudi 10 juin 2004
Statut
Membre
Dernière intervention
4 juillet 2006
-
Messages postés
150
Date d'inscription
dimanche 14 mars 2004
Statut
Membre
Dernière intervention
21 décembre 2007
-
Bonjour,


j'aimerais savoir comment Lorsque j'ai associer un datagrid a une table
dans une base de données avoir accès au type d'un champ ( ex date,
booleen etc... ) ainsi que au nom de chaque champ ( ex: téléphone, age
etc ... )


mon optique serait de pouvoir mettre a jour cette table, mais tout se
passe dynamiquement et je ne peux pas connaitre a l'avance la nature ni
le nom de chaque champs.


S' il vous plait aidez moi , je suis vraiment dans une impasse et je ne trouve toujours pas de solution

13 réponses

Messages postés
427
Date d'inscription
mercredi 1 octobre 2003
Statut
Membre
Dernière intervention
29 janvier 2008
1
    Tu peux creer un dataSet Typé de type *.Xsd

et apres qd tu creer ta table dans ton dataSet tu te base sur le schéma et tu aura tous les types des champs de ta table ainsi que les libellés

++
Messages postés
85
Date d'inscription
jeudi 10 juin 2004
Statut
Membre
Dernière intervention
4 juillet 2006

existe il un tutorial sur comment creer un dataset en .xsd ?
sinon comment faire ?
j'aimerai que mon datagrid soit updatable
( a laide de la commande oSqlDataAdapter.Update(oDataSet, "Categories") par exemple ) mais je ne connais rien des champs a updater. Est ce possible ?
Messages postés
427
Date d'inscription
mercredi 1 octobre 2003
Statut
Membre
Dernière intervention
29 janvier 2008
1
    Oui c'est possible d'updater ta tables a partir des changements effectuer dans ton dataGrid

http://msdn2.microsoft.com/fr-fr/library/ms171945.aspx // pour la création de fichiers xsd

http://msdn2.microsoft.com/fr-fr/library/system.data.common.dataadapter.update.aspx //Update ...
Messages postés
85
Date d'inscription
jeudi 10 juin 2004
Statut
Membre
Dernière intervention
4 juillet 2006

ca ma lair pas mal , seulement je travail avec webmatrix ...
je vais voir ce que je peux en tirer...
Messages postés
150
Date d'inscription
dimanche 14 mars 2004
Statut
Membre
Dernière intervention
21 décembre 2007
2
Heu...pour le shema je sais pas si c'est mieux..mais ya beaucoup plus simple je pense

Pour avoir le type de ton champs utilise :
DataTable.Columns["nomtable"].DataType.ToString()

et pour avoir le nom de la colonne par rapport à l'index :
DataTable.Columns[0].ColumnName

Ainsi tu peut combiner pour avoir toutes les colonnes

for (int i=0;i<DataTable.Columns.Count;i++)
DataTable.Columns[DataTable.Columns[i].ColumnName].DataType.ToString()

Jespere que cest un truc comme ca que tu attendais...
Messages postés
150
Date d'inscription
dimanche 14 mars 2004
Statut
Membre
Dernière intervention
21 décembre 2007
2
Bon la solution que je t'ai donnée cest si tu passe par un dataset ou un datable
Et c'est pour avoir le type mais le type .NET c'est a dire Date Int32 ou String....

Mais si tu veux vraiment le type de chaque champs mais le type SQL tu peux ca

     Requete SQL : ("SHOW COLUMNS FROM clients");
      for (int i=0;i<DataTable.Rows.Count;i++)  // itération de toutes les lignes
     
     "Type de (" + DataTable.Rows[i]["Field"].ToString() + ") : " + DataTable.Rows[i]["Type"].ToString());

et la ca va te renvoyer le nom de la table ainsi que le type SQL char(1) date varchar text blob etc...

voila voila
Messages postés
85
Date d'inscription
jeudi 10 juin 2004
Statut
Membre
Dernière intervention
4 juillet 2006

et cela fonctionne aussi si mon dataset est relié a un datagrid dont l'autogeneratecolumns = true?
car a chaque fois qu'il est a true , certaines propriétés ne fonctionne plus
Messages postés
85
Date d'inscription
jeudi 10 juin 2004
Statut
Membre
Dernière intervention
4 juillet 2006

a propos des schema .xsd, je ne crois pas que cela puisse correspondre puisqu'il faut dercrire a l'interieur si j'ai bien compris la structure de notre table qui va remplir le dataset or c'est ce que je veux eviter. Ai je tort?
Messages postés
150
Date d'inscription
dimanche 14 mars 2004
Statut
Membre
Dernière intervention
21 décembre 2007
2
???

Ben de toutes facon les opérations sont faite sur le dataset alors...

lautogeneratecolumns n'a rien avoir c'est juste pour laffichage c'est tout...


Je vois pas tres bien le but de ta question

Tu devrais essayer et apres voir si c'est vraiment ca que tu voulais....
Mais bon tu as demander comment avoir le nom et le type de champs champs...ben voila c'est comme ca...

Le problème c'est que ta pas beaucoup detailler ta question alors forcement...
Messages postés
85
Date d'inscription
jeudi 10 juin 2004
Statut
Membre
Dernière intervention
4 juillet 2006

jai essayé DataTable.Columns[0].ColumnName sur mon dataset, mais il me met en retour
Columns' is not a member of 'System.Data.DataSet'
ou ai je raté le coche ?
Messages postés
150
Date d'inscription
dimanche 14 mars 2004
Statut
Membre
Dernière intervention
21 décembre 2007
2
..................................................
J'espere pour toi que ta pas écrit ca directe dans ton code parce que....

bon ben voila le code depuis le debut alors...

      DataSet a=new DataSet;
      a.Tables[0].Columns["nomcolonne"].ColumnName;

Voila ca te retour un string, j'espere que j'aurais pas besoin de detailler pour avoir le type du champs...
Messages postés
85
Date d'inscription
jeudi 10 juin 2004
Statut
Membre
Dernière intervention
4 juillet 2006

J'arrive a obtenir le type de champ par la commande :


 response.write(ds.tables("datestest").Columns(ds.tables("datestest").Columns(i).ColumnName).DataType.ToString())


cependant, il me retourne soit system.string soit system.int32 or j'ai dans ma base des champ au format date entre autres.
la 2e solution  par le sql ne semble par vouloir fonctionné. pour info, ma base est sous acces, ma connection est une OLEDB et je ne sais pas si je peu utiliser la commande " SHOWS COLUMN FROM CLIENTS"

aurait tu une idée sur la maniere dobtenir les champs en détails ?


 
Messages postés
150
Date d'inscription
dimanche 14 mars 2004
Statut
Membre
Dernière intervention
21 décembre 2007
2
Ah ben la solution que je tai donner cest pour MySQL c'est pour
Je t'ai juste donnée le principe pour obtenir le type des champs c'est tous
Apres il faut que tu cherche lequivalent en ACCESS mais aparement c'est les champs en SQL que tu veux et non les types de C# donc il faut jque tu trouve la bonne requete en ACCESS pour les obtenir voila.

Essai de trouver lequivalent de SHOWS COLUMN FROM CLIENTS en ACCESS et le tour sera jouer.

Perso je prend Access c'est de la ...enfin c'est pas bien, maintenant c'est juste utiliser pour les testes ou pour les debutant.

Voila! Maintenant ta pu qu'à demander à notre vieille ami google.

Oublie pas de cloturer le post si tu trouve et de donnée la reponse des que tu la
++