2016-07-30 9 views
1

Ich möchte die Werte des Objekts findFamily zu den verschiedenen TextBox (s) zuweisen Ich habe den folgenden Code versucht, aber es funktioniert nicht, würden Sie mir bitte einen besseren Weg vorschlagen . Danke im Voraus.Wie List <> Objektwerte zu TextBox (s) zuweisen

private void Search_Click(object sender, RoutedEventArgs e) 
    { 
     if (SearchFamilyMemberId.Text.Trim() != "") 
     { 
      SITDataDataContext con = new SITDataDataContext(); 
      List<Family> findFamily = (from s in con.Families where s.FamilyMemberId.Equals(SearchFamilyMemberId.Text.Trim()) select s).ToList(); 
      if (findFamily.Any()) 
      { 
       FamilyMemberId.Text = findFamily[0]; 
       FirstName.Text = findFamily[1]; 
       LastName.Text = findFamily[2]; 
       if (findFamily[3]=="Male") 
       { 
        Male.IsChecked = true; 
       } 
       else 
       { 
        Female.IsChecked = true; 
       } 
       Phone.Text = findFamily[4]; 
       Address.Text = findFamily[5]; 

      } 
      else 
      { 
       MessageBox.Show("Family Id not found!"); 
      } 
     } 
     else 
     { 
      MessageBox.Show("Invalid Id!"); 
     } 
    } 

hier ist mein xamal Code

<Grid Margin="10"> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="Auto"/> 
      <RowDefinition Height="Auto"/> 
      <RowDefinition Height="Auto"/> 
      <RowDefinition Height="Auto"/> 
      <RowDefinition Height="Auto"/> 
      <RowDefinition Height="Auto"/> 
      <RowDefinition Height="*"/> 
      <RowDefinition Height="Auto"/> 
     </Grid.RowDefinitions> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="*"/> 
      <ColumnDefinition Width="*"/> 
      <ColumnDefinition Width="*"/> 
     </Grid.ColumnDefinitions> 
     <Label Grid.Row="1" Grid.Column="0" Content="Family Member ID:"/> 
     <Label Grid.Row="2" Grid.Column="0" Content="First Name:"/> 
     <Label Grid.Row="3" Grid.Column="0" Content="Last Name:"/> 
     <Label Grid.Row="4" Grid.Column="0" Content="Gender:"/> 
     <Label Grid.Row="5" Grid.Column="0" Content="Phone:"/> 
     <Label Grid.Row="6" Grid.Column="0" Content="Address:"/> 

     <CheckBox Name="ColonyResident" Content="Colony Resident" Grid.Row="0" Grid.Column="0" Margin="5" Checked="ColonyResident_Checked" Unchecked="ColonyResident_Unchecked"/> 
     <TextBox Name="SearchFamilyMemberId" IsEnabled="False" SelectionChanged="FamilyMemberId_SelectionChanged" Grid.Row="0" Grid.Column="1" Margin="3"/> 
     <TextBox Name="FamilyMemberId" IsEnabled="False" Grid.Row="1" Grid.Column="1" Margin="3" Grid.ColumnSpan="2"/> 
     <TextBox Name="FirstName" Grid.Row="2" Grid.Column="1" Margin="3" Grid.ColumnSpan="2"/> 
     <TextBox Name="LastName" Grid.Row="3" Grid.Column="1" Margin="3" Grid.ColumnSpan="2"/> 
     <RadioButton Name="Male" Grid.Row="4" Grid.Column="1" Margin="3" Content="Male" /> 
     <RadioButton Name="Female" Grid.Row="4" Grid.Column="2" Margin="3" Content="Female" /> 
     <TextBox Name="Phone" Grid.Row="5" Grid.Column="1" Margin="3" Grid.ColumnSpan="2"/> 
     <TextBox Name="Address" Grid.Row="6" Grid.Column="1" Margin="3" Grid.ColumnSpan="2" TextWrapping="Wrap"/> 
     <Button Name="Search" IsEnabled="False" Grid.Row="0" Grid.Column="2" Margin="3" MinWidth="100" MinHeight="25" HorizontalAlignment="Center" Content="Search" Click="Search_Click"/> 
     <Button IsDefault="True" Grid.Row="7" Grid.Column="1" Margin="3" MinWidth="100" MinHeight="25" HorizontalAlignment="Center" Content="Add" Click="Add_Click"/> 
     <Button Grid.Row="7" Grid.Column="2" Margin="3" MinWidth="100" MinHeight="25" HorizontalAlignment="Center" Content="Clear" Click="Clear_Click"/> 

    </Grid> 

Antwort

0

Verwendung foreach-Schleife durch die Liste als:

foreach(var a in findFamily) 
{ 

    txtbox.text=a[0].tostring(); 

    txtbox2.text=a[1].tostring(); 

} 

oder -nutzung:

txtbox.text = findFamily.Select(a => a[0].ToString()).FirstOrDefault().ToString(); 
0

Warum Sie keine Daten verwenden Bindung?

Für jedes der Textfelder, die Sie haben, binden Sie Ihre TextBox.Text an ihre entsprechende Eigenschaft in der View-Modell, so etwas wie dieses:

<TextBox Text={Binding FirstName} /> 

Dann ordnen Sie FirstName, LastName ... etc. Eigenschaften zu Werten und erhöhen INotifyPropertyChanged.PropertyChanged für jede der Eigenschaften (Ihr Ansichtsmodell sollte INotifyPropertyChanged implementieren) und Ihre Ansicht (d. h. UI) sollte aktualisiert werden.

0

Ich stimme mit keiner der hier geposteten Antworten überein. Die Frage scheint nicht richtig zu sein.

Wenn Sie eine Liste der Familienmitglieder haben. Wie kannst du es dann als einen einzigen Gegenstand zeigen? Woher weißt du, welches Element du anzeigen willst?

Daher ist mein Vorschlag, eine Listbox zu verwenden und Datenbindung zu verwenden, um eine Ansicht zu erstellen, um die Daten des aktuell ausgewählten Familienmitglieds in dieser Ansicht anzuzeigen.