2011-01-13 4 views
1

Ich habe den folgenden Code:Populate steuert Auto-magisch von einer Entity Framework Context Abfrage

IList<AccountMember> query; 

using (DBEntities context = new DBEntities()) 
{ 

    Guid ModifyUser = new Guid(Session["ModifyUser"].ToString()); 

    query = (from AccountMember member in context.AccountMember 
     where member.AccountMemberId == ModifyUser 
     select member).ToList(); 


    foreach (AccountMember member in query) 
    { 
    //this.FirstName.Text = member.FirstName; 
    ControlCollection controls = this.Controls; 

    foreach (Control control in controls) 
    { 
     if (control is TextBox) 
     { 
     TextBox x = (TextBox)control; 
     x.Text = member.FirstName; // want to replace the .FirstName with the TextBox ID value somehow 
     } 
    } // foreach (Control control in controls) 
    } // foreach (AccountMember member in query) 

} // using (DBEntities context = new DBEntities()) 

In der Zeile mit x.Text = member.FirstName; Ich möchte das FirstName-Element durch die TextBox-ID-Zeichenfolge ersetzen. So kann ich einfach meine TextBoxen automatisch loopen und befüllen

+0

Die Abfrage gibt immer ein einzelnes Ergebnis. Immer noch neu im Entity Framework. Wird einen besseren Weg zum Abrufen eines einzelnen Datensatzes betrachten – Thomas

Antwort

2

Haben Sie versucht, ein bindingsource erstellen, dann binden Sie Ihre Textfelder an diese.

Zur Laufzeit können Sie dann Ihre EF-Entity an die Bindungsquelle binden und Ihre Steuerelemente werden automatisch gefüllt.

Ein schönes Beispiel finden Sie here - es zeigt Bindung an ein Raster, aber das Prinzip ist ähnlich für die Bindung an einzelne Kontrollen.

Zusätzlich zu einer Einheit ziehen Sie tun können:

AccountMember member = context.AccountMember 
           .Single(m => m.AccountMemberId == ModifyUser); 

// Bind the fetched entity to the bindingsource and hence to the UI controls 
// At runtime this is all that is needed to update the controls, as long as 
// you have set things up at design time. 
myBindingSource.DataSource = member; 
+0

Danke, werde es versuchen – Thomas