2009-05-15 61 views
7

Tôi có một DataGrid (từ bộ công cụ) và tôi muốn lồng một DataGrid khác trong DataGrid.RowDetailsTemplate. Bí quyết là tôi muốn mang lại dữ liệu từ một bảng trong lưới chính và sau đó dựa trên lựa chọn hàng đi và nhận được chi tiết additonal từ một bảng khác nhau và hiển thị nó trong DataGrid trong mẫu chi tiết.Dữ liệu WPF lồng nhau

Điều này là dễ dàng, đủ để làm trong 2 DataGrids riêng biệt nhưng tôi gặp khó khăn khi làm cho nó hoạt động với phiên bản lồng nhau.

Điều này có thể thực hiện được không? Nếu có, ai đó có thể chỉ cho tôi đúng hướng. Tôi nên lưu ý tôi đang sử dụng LinqToSql clases để cư trú dữ liệu.

Cảm ơn bạn đã cân nhắc. -Joel

+2

Trong tên của tất cả những gì là tốt và thánh thiện, xin vui lòng _please_ không tổ a 'datagrid' trong một 'datagrid'. –

+0

@GregD bạn có thể giải thích lý do tại sao bạn không làm điều gì đó như vậy? – SoftwareSavant

+0

Với ngoại lệ của một DBMS thô, một DataGrid thực tế luôn là trải nghiệm người dùng sai. Nó nặng, phức tạp, dày đặc, nó không bao gồm thông tin ngữ cảnh hiệu quả, và nó chỉ ra một thất bại trong việc thiết kế một ux tốt. Phân tán điều khiển phức tạp, nặng nề với _another_ nặng, điều khiển phức tạp chỉ là một kịch bản ác mộng. Nếu bạn có dữ liệu phân cấp, hãy xem xét sao chép mô hình Windows Explorer. Danh sách xem trọng lượng nhẹ hơn kết hợp với điều khiển cây là _very_ mô hình nổi tiếng và được hiểu rõ. Do _not_ lồng một datagrid trong một datagrid khác. –

Trả lời

5

Nếu bạn đang sử dụng LinqToSQL, bạn có thể dễ dàng thực hiện việc này bằng cách sử dụng liên kết. Trong thực tế, tôi đã tạo ra hai bảng:

GuyTable

  • Tên
  • Họ
  • UniqueID

GuyActionsTable

  • UniqueID
  • GuyID
  • Hành động Mô tả

Tôi tạo ra một mối quan hệ một-nhiều từ GuyTable.UniqueID để GuyActionsTable.GuyID gọi là "GuyActions"

sau đó tôi ràng buộc DataGrid của tôi như thế này. Xin lỗi bất kỳ lỗi nào như tôi đang làm điều này bằng tay:

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

Các vấn đề liên quan