LinqToSql générique peupler une dropdownlist

Signaler
Messages postés
38
Date d'inscription
mercredi 4 juillet 2007
Statut
Membre
Dernière intervention
23 février 2009
-
Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
-
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

Messages postés
38
Date d'inscription
mercredi 4 juillet 2007
Statut
Membre
Dernière intervention
23 février 2009

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.
Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
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