2013-04-13 26 views
0

我有一個帶有外鍵的表。我想顯示數據作爲描述,而不是相關表的ID。從實體服務,我已經在數據模型上做出了.Include聲明,以便它返回。以下是我已經試過,車站在細胞顯示出來,但沒有在下拉列表:Silverlight WCF數據綁定相關表

<sdk:DataGridTemplateColumn CanUserReorder="False" CanUserResize="False" CanUserSort="False" Width="Auto" Header="Station"> 
     <sdk:DataGridTemplateColumn.CellTemplate> 
     <DataTemplate> 
      <TextBlock Text="{Binding Station.Description}" /> 
     </DataTemplate> 
     </sdk:DataGridTemplateColumn.CellTemplate> 
     <sdk:DataGridTemplateColumn.CellEditingTemplate> 
     <DataTemplate> 
      <ComboBox ItemsSource="{Binding Station}" /> 
     </DataTemplate> 
     </sdk:DataGridTemplateColumn.CellEditingTemplate> 
    </sdk:DataGridTemplateColumn> 

<OperationContract()> 
    Public Function LoadPersonnel(clientId As Integer) As List(Of Personnel) 
    Dim result As List(Of Personnel) 
    Try 
     result = db.Personnels.Include("Station").Where(Function(o) o.ClientId = clientId).ToList 
    Catch 
     result = Nothing 
    End Try 
    Return result 
    End Function 

也試過:

<ComboBox ItemsSource="{Binding}" DisplayMemberPath="{Binding Station.Description}" SelectedItem="{Binding Station.Description}" SelectedValue="{Binding Station.StationId}" /> 

回答

1

不喜歡這樣,

<sdk:DataGrid AutoGenerateColumns="False" Height="100" HorizontalAlignment="Left" Margin="107,90,0,0" Name="dataGrid1" VerticalAlignment="Top" Width="251" > 
      <sdk:DataGrid.Columns> 
      <sdk:DataGridTemplateColumn CanUserReorder="False" CanUserResize="False" CanUserSort="False" Width="Auto" Header="Station"> 
       <sdk:DataGridTemplateColumn.CellTemplate> 
        <DataTemplate> 
         <TextBlock Text="{Binding Station.Description}" /> 
        </DataTemplate> 
       </sdk:DataGridTemplateColumn.CellTemplate> 
       <sdk:DataGridTemplateColumn.CellEditingTemplate> 
        <DataTemplate> 
         <ComboBox ItemsSource="{Binding Station}" DropDownOpened="ComboBox_DropDownOpened" /> 
        </DataTemplate> 
       </sdk:DataGridTemplateColumn.CellEditingTemplate> 
      </sdk:DataGridTemplateColumn> 
      </sdk:DataGrid.Columns> 
     </sdk:DataGrid> 

在下拉開放活動,分配物品信息,

private void ComboBox_DropDownOpened(object sender, EventArgs e) 
     { 
      var combo = (ComboBox)sender; 
      combo.ItemsSource = Station; 
      combo.DisplayMemberPath = "Description"; 
     } 
+0

S Ince Station並不存在,除了在另一個數據源中搭載數據之外,我製作了IEnumerable(Of Station)並從服務中填充它。現在他們充滿了選擇!我現在需要獲取選定的值並將其應用於原始對象,並通過服務將其保存回數據庫。我會玩這個,看看我能想出什麼。我仍然需要弄清楚如何將selectedItem設置爲正確的值。如果你有一些這方面的內容,我很樂意聽到,否則我只是不斷堵塞... – OneFineDay

+1

要獲得選定的值,var x =(您的itemssource對象)combobox.SelectedItem; – Sajeetharan

+0

您會推薦哪個活動?我一直在看事件,它們與Winforms和ASPX DataGrids(或類似的)差別很大。 CellEditEnding看起來很有前途。我通常會在DataBound事件中這樣做。 – OneFineDay