1

SQL Server には A と B という 2 つのテーブルがあります。B はドキュメントのリストで、A にはプロジェクトに B の行を含める必要があるかどうかを示すデータが含まれています。

A
___________
AId int PK,
BId int,
Include bit

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

A と B の POCO がありますが、最終的には、両方のデータ (BDocNumber、BName、Include) を含む devExpress グリッドにバインドできるものを求めています。

  1. B をナビゲーション プロパティとして設定できますが、それをグリッド用に平坦化する方法がわかりません (DevExpress ASPxGridView、サーバー モード)。

  2. エンティティの分割も調べましたが、AId ではなく BId に参加したいので、うまくいかないようです。

1 または 2 のいずれかに対する解決策は許容されますが、両方について学ぶことはすばらしいことです。

ありがとう

4

1 に答える 1

1

あなたが持っているのは、DevExpress グリッドでアクセスしたい A から B の "has-a" 関係または 1 対 1 のナビゲーション プロパティです。これを行うには、FieldName プロパティを NavigationProperty.FieldName に設定します。

Persont と Address の 1 対 1 の関係は、次のようになります。

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

     }

Person と Address ナビゲーション プロパティの StreeAddress プロパティの両方を含めるための aspx ページの GridView は、次のようになります。

        <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 です。グリッドビューを A にバインドしているので、フィールド名を B.FieldToDisplay に設定します。

お役に立てれば!

于 2012-04-24T15:36:24.367 に答える