0

寻找一种创建 Linq-to-SQL Master-Detail WinForms DataGridViews 的方法,其中 Linq 查询的详细信息部分是自定义的。可以做到这一点:

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 部分做更复杂的事情?有没有其他人觉得这是有限的(如果第一个例子是我们能做的最好的)?谢谢!

4

1 回答 1

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;
};
于 2010-06-14T13:59:27.557 回答