LinqToSql générique peupler une dropdownlist

sspizer Messages postés 38 Date d'inscription mercredi 4 juillet 2007 Statut Membre Dernière intervention 23 février 2009 - 23 févr. 2009 à 10:53
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Modérateur Dernière intervention 15 juillet 2011 - 23 févr. 2009 à 17:37
Bonjour,
Actuellement j'aimerais remplir une dropdownlist de facon générique:

public void GetData(MydataContext c)
{
   ...
}

Anciennement on passait en parametre la procedure stockée à executer, la méthode se chargeait de l'executer prenait le retour et savait que l'id à récupérer etait dans la colonne 0 et que le nom etait en colonne 1.

Mais en LinqToSql, je n'ai pas trouvé de notion de colonne 0 ou 1, puisque l'on fait l'appel directement par du code comme ceci:

int id = MyDataContext.Products.ProductID;

Je dois m'y prendre comment pour reussir à faire du générique?

2 réponses

sspizer Messages postés 38 Date d'inscription mercredi 4 juillet 2007 Statut Membre Dernière intervention 23 février 2009
23 févr. 2009 à 11:39
En fait le problème ce résume à trois étape:

1) Comment Récupérer une table du datacontext de facon générique.
par exemple:
public void MyTable(DataContext myContext,Type myTableType)
{
      Table<T> t = myContext.getTable(myTableType)
}

2) Récupérer l'ensemble des lignes de ma table
public void GetAllRows(Table<T> t)
{
   Rows r = t.getRows();
}

3) Récupérer que certaines colonnes
public void GetColumnEntry(string colName, Rows r)
{
   foreach(Row in r)
   {
      Row[colName];
   }
}

jespere que c'est plus clair maintenant.
Merci pour vos réponses, Si vous avez une meilleur facon de faire n'hésitez pas à la proposer.
0
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Modérateur Dernière intervention 15 juillet 2011 37
23 févr. 2009 à 17:37
Salut

Voici une methode fonctionnelle avec du XML et pour windows forms
donc avec une base de données et de l'asp.net c'est plus facile ;-)

Ne passe pas par les getTables mais directement par le contexte

DbNorthwindModel db = new DbNorthwindModel();
var q = from i in db.customer            select new Pays { Nom p.Nom, Id p.Id}

Mais le contexte si possible en singleton dans une classe comme ca il sera charger tout le temps et ne sera pas recréer a chaque instanciation

Bonne traduction

class Pays

    {

        public string Nom { get; set; }

        public string Id { get; set; }

    }

Dans le form load

         XDocument r = XDocument.Load("pays.xml");

            var pays = from p in r.Descendants("Pays")
                       select new Pays { Nom p.Value, Id p.Attribute("Id").Value };

            comboBox1.DataSource = pays.ToList();

            comboBox1.ValueMember = "Id";

            comboBox1.DisplayMember = "Nom";

            comboBox1.SelectedValueChanged += comboBox1_SelectedIndexChanged;

<?xml version="1.0" encoding="utf-8" ?>



  France



  Italie



  Cor&#233;e



  Australie
0
Rejoignez-nous