寻找一种方法来创建Linq-to-SQL Master-Detail WinForms DataGridViews,其中Linq查询的Detail部分是自定义的。 可以做得很好:
DataClasses1DataContext db = new DataClasses1DataContext(".\\SQLExpress");
var myQuery = from o in db.Orders select o;
dataGridView1.DataSource = new BindingSource()
{
DataSource = myQuery
};
dataGridView2.DataSource = new BindingSource()
{
DataSource = dataGridView1.DataSource,
DataMember = "OrderDetails"
};
但是我希望将细节部分置于我的精确控制之下,例如
var myQuery = from o in db.Orders join od in db.OrderDetails
on o.ID equals od.OrderID into MyOwnSubQuery select o;
并将其用于第二个网格:
dataGridView2.DataSource = new BindingSource()
{
DataSource = dataGridView1.DataSource,
DataMember = "MyOwnSubQuery" // not working...
};
我想要它的真正原因有点复杂(我想让Detail部分实际上是一些非预先定义的连接),但我希望上面传达了这个想法。
我可以只将Detail部分作为普通子表从预定义的关系中出来,还是可以使用Detail部分做更复杂的事情?有没有人觉得这是有限的(如果第一个例子是我们能做的最好的)?谢谢!
答案 0 :(得分:0)
在黑暗中拍摄:
public class MyDataSource
{
DataClasses1DataContext db = new DataClasses1DataContext(".\\SQLExpress");
public IQueryable<Order> AllOrders
{
get { return db.Orders; }
}
public IQueryable<OrderDetails> OrderDetails
{
get
{
// define your custom query here
}
}
}
MyDataSource dataSource = new MyDataSource();
dataGridView2.DataSource = new BindingSource()
{
DataSource = dataSource.AllOrders;
DataMember = dataSource.OrderDetails;
};