2010-06-14 5 views
0

recherche d'un moyen de créer Linq-to-SQL maître-détail WinForms DataGridViews où la partie Détail de la requête Linq est une personnalisée. peut-il faire amende ceci:Détail personnalisé dans Linq-to-SQL DataGridViews maître-détail

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

mais je voudrais avoir la partie de détail sous mon contrôle précis, comme

var myQuery = from o in db.Orders join od in db.OrderDetails 
on o.ID equals od.OrderID into MyOwnSubQuery select o; 

et de l'utiliser pour la deuxième grille:

dataGridView2.DataSource = new BindingSource() 
{ 
    DataSource = dataGridView1.DataSource, 
    DataMember = "MyOwnSubQuery" // not working... 
}; 

la vraie raison pour laquelle je le veux est un peu plus complexe (j'aimerais que la partie Detail soit une jointure non-pré-définie), mais j'espère que ce qui précède a véhiculé l'idée. Puis-je avoir uniquement la partie Détail en tant que sous-table simple sortant de la relation prédéfinie ou puis-je faire des tâches plus complexes avec la partie Détail? Est-ce que quelqu'un d'autre pense que c'est un peu limité (si le premier exemple est le meilleur que nous pouvons faire)? Merci!

Répondre

0

Prise de vue dans l'obscurité:

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; 
}; 
+0

Merci! Mais comment ai-je essayé, je ne pouvais pas y arriver. Au point de "ma requête personnalisée" cela doit dépendre de la sélection du maître, mais comment le savoir? Et le DataMember est vraiment une propriété de chaîne. IQueryable se sent comme la bonne direction, de toute façon. – Andres