Пользовательская деталь в Linq-to-SQL Master-Detail DataGridViews - PullRequest
0 голосов
/ 14 июня 2010

ищет способ создания Linq-to-SQL WinForms DataGridView Master-Detail, где деталь Detail запроса 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"
};

, но я бы хотел иметь деталь Detail под моим точным контролем, например

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?Кто-нибудь еще считает это ограниченным (если первый пример - лучшее, что мы можем сделать)?Спасибо!

1 Ответ

0 голосов
/ 14 июня 2010

Снято в темноте:

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;
};
...