2

私はC#、エンティティ、およびグリッドの操作に関する初心者であるため、私が求めていることはやや一般的であると想定していますが、少し迷っています。SQL データベースに と の 2 つのテーブルがPeriodicReportsありPeriodicReportGroupsます。各レポート グループには 1 つ以上の定期レポートを含めることができるため、私が想像したのは、左側に + 記号があり、各グループに関連する定期レポートを表示する展開可能な行を持つグリッドです。DevExpressサポートサイトで非常によく似た例を見たので、これができることは知っていますが、それらを理解し、自分のケースに適用するために時間を費やしましたが、まだそれを行う方法を理解していません. これは私のコードがどのように見えるかです。テーブルで Entity Framework を使用した後、このクラスが自動的に作成されました。

public partial class ReportEntities : DbContext
{
    public ReportEntities()
        : base("name=ReportEntities")
    {
    }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        throw new UnintentionalCodeFirstException();
    }

    public DbSet<PeriodicReportGroup> PeriodicReportGroups { get; set; }
    public DbSet<PeriodicReport> PeriodicReports { get; set; }
}

グリッドに特定の列のみを表示するために、このインターフェイスとクラスを自分で作成しました。

    public interface IPeriodicReportGroup
{
    string Name { get; }
    string Description { get; }
    bool Active { get; set; }
}

public partial class PeriodicReportGroup : IPeriodicReportGroup
{
}

一方、XtraGrid を使用した XtraForm があります。

public partial class Form1 : XtraForm
{
    public Form1()
    {
        InitializeComponent();
        InitSkinGallery();
        InitGrid();
    }

    BindingList<IPeriodicReportGroup> gridDataList = new BindingList<IPeriodicReportGroup>();

    void InitGrid()
    {
        var database = new ReportEntities();

        var reportGroups = database.PeriodicReportGroups.ToList( );

        foreach (var group in reportGroups )
            gridDataList.Add( group );

        gridControl.DataSource = gridDataList;
    }
...

これまでのところ、DB にある定期レポート グループをグリッドにうまく配置できています。これは良いことです。しかし、グループごとに展開される詳細グリッドをどのように正確に設定するかについてはまだ手がかりがありませんが、それはかなり標準的なものであるべきだと思います. 誰でもガイダンスを提供できますか?他の誰かに仕事を頼んでいるわけではありません。ただ、正しい方向に向けてくれる何かを求めているだけです。また、空の行にデータを入力して、実行時に新しいグループと新しい詳細を追加できるようにしたいのですが、これは可能ですか?

前もって感謝します!

4

1 に答える 1

0

XtraGrid は、それを行う 3 つの方法をサポートしています。詳細については、このリンクを確認してください。基本的にマスター詳細は混乱するものですが、注意深く読むと役に立ちます。

于 2012-12-06T15:25:18.143 に答える