Veuillez garder à l'esprit que je ne connais ni le C# ni le POO. Je m'excuse d'avance si cela semble une question facile pour certains. Je reviens sur mon code et cherche des moyens d'objectiver le code répétitif et de créer un cours pour que je puisse simplement réutiliser la classe. Cela étant dit, je ne cherche pas à apprendre NHibernate ou tout autre ORM pour l'instant. Je ne cherche même pas à apprendre LINQ. Je veux pirater ça pour apprendre.Création d'une classe à utiliser pour remplir des listes déroulantes, des grilles, etc., en C#
Fondamentalement, j'utilise le même bit de code pour accéder à ma base de données et remplir une liste déroulante avec les valeurs que je reçois. Un exemple:
protected void LoadSchools()
{
SqlDataReader reader;
var connectionString = ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString;
var conn = new SqlConnection(connectionString);
var comm = new SqlCommand("SELECT * FROM [Schools] ORDER BY [SchoolName] ASC", conn);
try
{
conn.Open();
reader = comm.ExecuteReader();
cmbEditSchool.DataSource = reader;
cmbEditSchool.DataBind();
cmbEditSchool.Text = "Please select an existing school to edit...";
if (reader != null) reader.Close();
}
finally
{
conn.Dispose();
}
}
J'utilise ce même morceau de code, encore et encore tout au long de mon programme, sur des pages différentes. Le plus souvent, je remplis une liste déroulante ou une zone de liste déroulante, mais parfois je vais remplir une grille, en modifiant légèrement la requête.
Ma question est comment puis-je créer une classe qui me permettra d'appeler une procédure stockée, au lieu d'utiliser manuellement des requêtes comme mon exemple, et remplir mes différents contrôles? Est-il possible de faire avec seulement 1 méthode? J'ai seulement besoin de commencer avec les sélections. J'ai lu sur IEnumerable qui semble être l'interface appropriée à utiliser, mais comment l'utiliser?
Edité à ajouter:
Je marqué la réponse de Rorschach la réponse parce que s/il a abordé ma question IEnumerable. Je comprends également le besoin d'une couche DAL appropriée et peut-être BLL. Ce que j'essayais d'obtenir était cela. Je peux construire une liste de diffusion numérique en utilisant des ensembles de données et des adaptateurs de table qui, à la fin, me donne un ensemble de données fortement typé. Cependant, je me sens un peu éloigné du code. Je recherchais moi-même un moyen simple de construire le DAL en commençant par le code que j'ai donné plus haut. Peut-être que je ne suis pas en train de formuler ma question, ou ce que je veux, correctement. En tout cas, Rorschach était le plus proche de répondre à ma vraie question. En tout cas, Rorschach était le plus proche. Merci.
J'apprécie l'information, cependant, je ne veux pas nécessairement utiliser un ensemble de données. Je n'ai pas besoin de données déconnectées et je veux vraiment apprendre à le faire à partir de rien ... pour ainsi dire. Je peux laisser tomber un contrôle SqlDataSource sur ma page et être fait avec lui. Cela ne m'aide pas à apprendre ... – GregD
@GregD, je dirais que l'apprentissage d'une mauvaise pratique n'est pas la première étape pour «roder» l'apprentissage. L'aversion à se lier directement à un lecteur de données va beaucoup plus loin qu'une simple «préférence», c'est une mauvaise pratique pour plusieurs raisons. Relier les données directement aux formulaires est une formule perdante tout autour. –
Je suppose que je ne vous suis pas Michael. Je n'ai pas d'aversion à se lier directement à un lecteur de données. J'essayais simplement de réutiliser le code et demandais un moyen de créer une classe (débuts d'un DAL) qui aurait un lecteur de données "universel" et je pourrais utiliser la classe à la place. – GregD