1

我在 SQL Server 中有两个表,比如 A 和 B。B 是文档列表,A 包含指示项目是否应该在 B 中包含一行的数据。

A
___________
AId int PK,
BId int,
Include bit

B
___________
BId int PK,
BDocNumber varchar(10),
BName varchar(128)

我有 A 和 B 的 POCO,但最终我想要的是我可以绑定到包含来自两者的数据的 devExpress 网格(BDocNumber,BName,Include)

  1. 我可以将 B 设置为导航属性,但我不知道如何将其展平为网格(DevExpress ASPxGridView,服务器模式)

  2. 我也研究过实体拆分,但似乎这行不通,因为我想加入 BId 而不是 AId。

1 或 2 的解决方案是可以接受的,但了解两者都会很棒。

谢谢

4

1 回答 1

1

您拥有的是要在 DevExpress Grid 中访问的“has-a”关系或 A 到 B 中的一对一导航属性。您可以通过将 FieldName 属性设置为 NavigationProperty.FieldName 来执行此操作

假设 Persont 与 Address 的一对一关系,如下所示:

    public class Person
    {

      public int ID { get; set; }
      public string FirstName { get; set; }
      public string LastName { get; set; }
      public virtual Address Address { get; set; }
    }

    public class Address
    {
      public int ID { get; set; }
      public string StreetAddress { get; set; }
      public string City { get; set; }
      public string State { get; set; }
      public string Zip { get; set; }

     }

您的 GridView 在您的 aspx 页面中包含 Address 导航属性的 Person 和 StreeAddress 属性,如下所示

        <dx:ASPxGridView ID="ASPxGridView1" runat="server">
        <Columns>
            <dx:GridViewDataTextColumn FieldName="FirstName" VisibleIndex="0">
            </dx:GridViewDataTextColumn>
            <dx:GridViewDataTextColumn FieldName="LastName" VisibleIndex="1">
            </dx:GridViewDataTextColumn>
            <dx:GridViewDataTextColumn FieldName="Address.StreetAddress" VisibleIndex="1">
            </dx:GridViewDataTextColumn>
        </Columns>
    </dx:ASPxGridView>

在这种情况下,Person 是表 A,Address 是表 B。您将 gridview 绑定在 A 上,因此您将字段名称设置为 B.FieldToDisplay。

希望这可以帮助!

于 2012-04-24T15:36:24.367 回答