2009-05-15 54 views
7

DataGrid'im (araç setinden) var ve DataGrid.RowDetailsTemplate içinde başka bir DataGrid yerleştirmek istiyorum. Hile, ana ızgaradaki bir tablodaki verileri geri getirmek ve sonra satır seçimine dayanarak farklı bir tablodan ek detaylar almak ve detay şablonunda DataGrid'de göstermek istiyorum.İç içe WPF DataGrids

Bu, 2 ayrı DataGrids içinde yapmak için yeterince kolaydır, ancak yuvalanmış sürümü ile çalışmak için alma konusunda sorun yaşıyorum.

Bu mümkün mü? Eğer öyleyse, birisi bana doğru yönde işaret edebilir. Verileri doldurmak için LinqToSql clases kullanıyorum dikkat etmeliyim.

İlginiz için teşekkür ederiz. -Joel

+2

tüm bu adına iyi ve kutsaldır, _please_ başka 'datagrid' içinde yuva bir' datagrid' yok lütfen lütfen. –

+0

@GregD neden böyle bir şey yapmayacağınızı açıklayabilir misiniz? – SoftwareSavant

+0

Ham DBMS dışında, DataGrid her zaman yanlış kullanıcı deneyimidir. Bu ağır, karmaşık, yoğun, etkili bir bağlamsal bilgi içermiyor ve iyi bir ux tasarlamadaki başarısızlığının bir göstergesi. Ağır, karmaşık kontrolün _another_ ağır, karmaşık kontrol ile katmanlanması sadece bir kabus senaryosudur. Hiyerarşik verileriniz varsa, Windows Gezgini paradigmasını kopyalamayı düşünün. Ağaç kontrolü ile birleştirilen daha hafif liste görünümü, _very_ iyi bilinen ve iyi anlaşılmış bir paradigmadır. Bir datagrid'i başka bir veri kılavuzunda yuvalayın. –

cevap

5

LinqToSQL kullanıyorsanız, bunu bir ilişkilendirme kullanarak kolayca yapabilirsiniz.

GuyTable

  • İsim
  • Soyadı
  • Uniqueıd

GuyActionsTable

  • Uniqueıd
  • : my Uygulamada İki tablo oluşturduk
  • ben o zaman böyle benim DataGrid bağlama "GuyActions"

    denilen GuyActionsTable.GuyID için GuyTable.UniqueID bir bire çok ilişki yarattı

  • Eylem Tarif

GuyID. Ben elle yapıyorum olarak herhangi bir hata dilerim:

<w:DataGrid ItemsSource={Binding Source={StaticResource YourDataSource}}> 
<w:DataGrid.RowDetailsTemplate> 
    <DataTemplate> 
     <w:DataGrid ItemsSource={Binding GuyActions}> 
      <w:DataGrid.Columns> 
       <w:DataGridTextColumn Header="Action" DisplayMemberBinding="{Binding Action_Description}" /> 
      </w:DataGrid.Columns> 
     </w:DataGrid> 
    </DataTemplate> 
</w:DataGrid.RowDetailsTemplate> 
<w:DataGrid.Columns> 
    <w:DataGridTextColumn Header="First Name" DisplayMemberBinding="{Binding First_Name}" /> 
    <w:DataGridTextColumn Header="Last Name" DisplayMemberBinding="{Binding Last_Name}" /> 
</w:DataGrid.Columns>