我是 C#、实体和使用网格的初学者,所以虽然我认为我问的问题有些笼统,但我有点迷茫。
我的 SQL 数据库中有两个表: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; }
}
我自己创建了这个接口(interface)和类,以便只显示我的网格中的某些列:
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;
}
...
到目前为止,我已经成功地将数据库中的定期报告组放入网格中,这很好。但是我仍然不知道如何准确地设置将为每个组扩展的详细信息网格,尽管我觉得它应该是非常标准的东西。有人可以提供一些指导吗?我不是在要求其他人做我的工作,只是一些可以指出我正确方向的东西,因为现在我很迷茫。 我也希望能够通过将数据输入空行来在运行中添加新组和新详细信息,这可能吗?
提前致谢!
最佳答案
XtraGrid 支持三种方式: 检查这个link了解更多信息。 基本上,主要细节是令人困惑的东西,但仔细阅读会对你有所帮助。
关于c# - 使用 XtraGrid Entity Framework 创建主/细节网格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13281199/