我有一个IList,我将其作为参数传递给Dev Express 10.2 GridControl数据源。每个“Foo”可能有一个IList或没有。我应该怎么做,制作一个Master-Detail网格,其中Foos是主行,并且对于包含Bars列表的每个Foo,显示一个“加号”按钮,用于显示“Bar”子表?
我正在使用nHibernate,因此,我无法使用数据表/数据集来完成这项工作(我们可以在DevExpress在线文档中看到)
我意识到GridControl有一个名为EnableMasterViewMode的布尔属性,但是我无法使这个东西工作。我做错了什么?
我在这里使用WinForms。
提前谢谢。
答案 0 :(得分:4)
浏览Master-Detail Overview并查看Data Sources
部分,了解提供数据源的具体方法。如果要实现主详细信息,则必须使用IRelationList
接口或Master-Detail: Using Events
public partial class MasterDetails : Form
{
GridControl grid;
GridView view;
GridView detailView;
GridLevelNode detailNode;
public MasterDetails()
{
InitializeComponent();
InitializeGrid();
InitializeAndAddColumnsToViews();
InitializeAndBindDataSource();
}
private void InitializeGrid()
{
grid = new GridControl();
view = new GridView(grid);
detailView = new GridView(grid);
detailNode = grid.LevelTree.Nodes.Add("SuppliersProducts", detailView);
grid.Dock = DockStyle.Fill;
this.Controls.Add(grid);
}
private void InitializeAndAddColumnsToViews()
{
if (view != null && detailView != null)
{
view.Columns.AddField("CategoryID").VisibleIndex = 0;
detailView.Columns.AddField("ID").VisibleIndex = 0;
detailView.Columns.AddField("Name").VisibleIndex = 1;
detailView.Columns.AddField("Category").VisibleIndex = 2;
}
}
private void InitializeAndBindDataSource()
{
List<BookDetail> bookDetails = new List<BookDetail>();
BookDetail bookDetail = null;
for (int j = 0; j < 5; j++)
{
bookDetail = new BookDetail { CategoryID = j + 1 };
for (int i = 0; i < 5; i++)
{
bookDetail.Books.Add(new Book
{
ID = 1,
Name = "Book - " + (i + 1),
Category = j + 1
});
}
bookDetails.Add(bookDetail);
}
grid.DataSource = bookDetails;
}
}
使用的类:
public class Category
{
public int ID { get; set; }
public string Name { get; set; }
}
public class BookDetail
{
private List<Book> books = new List<Book>();
public int CategoryID { get; set; }
public List<Book> Books
{
get
{
return books;
}
set
{
books = value;
}
}
}
public class Book
{
public int ID { get; set; }
public string Name { get; set; }
public int Category { get; set; }
}
其中Foos是主行,并且对于包含条形列表的每个Foo,显示“加号”按钮以显示“条形”子表格?
如果没有成功,尝试按上述方法实施,然后按照Master - Detail Section的数据规范部分进行操作。
如果你想在详细信息展开按钮时获取条形图,那么点击Master-Detail: Using Events
它几乎是自定义方式来实现你拥有的任何数据对象。