2016-07-30 176 views
1

我想將findFamily對象的值賦給不同的TextBox(s)我嘗試了下面的代碼,但它不工作,請你給我一個更好的方法。提前致謝。如何將List <>對象值賦給textBox(s)

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!"); 
     } 
    } 

這裏是我的xamal代碼

<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> 

回答

0

使用foreach循環通過列表如下:

foreach(var a in findFamily) 
{ 

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

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

} 

或使用:

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

你爲什麼不使用數據捆綁?

對於每一個你有文本框,綁定你TextBox.Text在視圖模型的相應屬性,這樣的事情:

<TextBox Text={Binding FirstName} /> 

然後,分配你的FirstNameLastName ...等。屬性設置爲值併爲每個屬性(您的視圖模型應執行INotifyPropertyChanged)提出INotifyPropertyChanged.PropertyChanged,並且您的視圖(即UI)應該更新。

0

我不同意這裏發佈的任何答案。這個問題似乎並不正確。

如果您有家庭成員的列表。那麼你怎麼能把它作爲一個單一的項目。你怎麼知道你想要顯示哪個項目。

因此,我的建議是使用列表框並使用數據綁定,創建一個視圖以顯示當前選定的家庭成員的數據在該視圖中。

相關問題