2011-09-23 3 views
0

J'essaie de définir des zones de texte sur une page Web ASP.NET en utilisant LINQ - SQL. Voici le code que je dois exécuter l'instruction select:ASP.NET LINQ SQL obtenir des champs spécifiques

EQCN = Request.QueryString["EQCN"]; 
    var equipment = from n in db.equipments 
        where n.EQCN.ToString() == EQCN 
        select n; 

Comment puis-je configurer TextBox1.Text être un champ spécifique dans la table?

Merci beaucoup

EDIT

je dois sortie tous les champs de la table dans différentes zones de texte. Donc, effectuer une requête pour un seul semble un peu beaucoup. Il doit y avoir un moyen de faire cela?

Merci

Répondre

2

Vous avez seulement besoin d'effectuer la requête une fois, mais une fois cela fait, vous devrez assigner chaque champ à un TextBox. Commencez par récupérer uniquement le seul élément que vous voulez:

EQCN = Request.QueryString["EQCN"]; 
var equipment = (from n in db.equipments 
       where n.EQCN.ToString() == EQCN 
       select n).FirstOrDefault(); 

Ensuite, passer par et attribuons à chaque zone de texte dans le champ approprié:

txtName.Text = equipment.Name; 
txtDescription.Text = equipment.Description; 
txtValue1.Text = equipment.Value1; 
txtValue2.Text = equipment.Value2; 
//... 

Si vous avez plusieurs dizaines TextBoxes à attribuer, vous pouvez configurer un contrôle personnalisé qui peut être databound à un objet equipment, mais même alors, vous devrez toujours écrire le code de liaison pour votre contrôle.

La seule façon que je peux penser à automatiser totalement ce processus est de nommer chaque TextBox après un champ dans votre objet, puis utilisez la réflexion pour les faire correspondre aux valeurs:

var textboxes = Panel1.Controls.OfType<TextBox>(); 

    foreach (TextBox txt in textboxes) 
    { 
     string fieldname = txt.ID.Remove(0, 3); //"txtDescription" becomes "Description" 

     string value = equipment.GetType().GetProperty(fieldname).GetValue(equipment, null) as string; 
     txt.Text = value; 
    } 
3

Eh bien, vous pouvez sélectionner le champ approprié de commencer par:

EQCN = Request.QueryString["EQCN"]; 
var values = from n in db.equipments 
      where n.EQCN.ToString() == EQCN 
      select n.FieldYouWant; 

// Or possibly Single, or First... 
var singleValue = values.FirstOrDefault(); 

Je pense que ce que vous étiez après, mais si ce n'est pas, s'il vous plaît préciser votre question.

EDIT: Pour répondre à votre suivi, vous pouvez utiliser:

EQCN = Request.QueryString["EQCN"]; 
var query = from n in db.equipments 
      where n.EQCN.ToString() == EQCN 
      select n; 

// Or possibly Single, or First... 
var entity = query.Single(); 

textBox1.Text = entity.Name; 
textBox2.Text = entity.Description; 
textBox3.Text = entity.Title; 
// etc 

C'est en supposant que vous voulez avoir accès à tout dans l'entité. Si l'entité est très grand et vous avez seulement besoin de quelques champs, vous pourriez voulez faire quelque chose comme ceci:

EQCN = Request.QueryString["EQCN"]; 
var query = from n in db.equipments 
      where n.EQCN.ToString() == EQCN 
      select new { n.Name, n.Description, n.Title }; 

// Or possibly Single, or First... 
var projection = query.Single(); 

textBox1.Text = projection.Name; 
textBox2.Text = projection.Description; 
textBox3.Text = projection.Title; 

Je ne suis pas sûr que je serais en fait deux l'accès aux données et couches de l'interface utilisateur si étroitement , mais c'est une question différente ...

Questions connexes