2010-08-24 3 views
0

Im en utilisant LinqDataSource comme ça:colonnes dynamiques avec asp: LinqDataSource

<asp:LinqDataSource ID="LinqDataSource3" runat="server"  OnSelecting="LinqDataSource3_OnSelecting">  

</asp:LinqDataSource> 

Et je ASPxGridView

<dxwgv:ASPxGridView ID="ASPxGridView2" ClientInstanceName="ASPxGridView2Client" 
          runat="server" AutoGenerateColumns="False" 
          DataSourceID="LinqDataSource3"> 
         </dxwgv:ASPxGridView> 

De cette façon Im capable d'ajouter des colonnes dynamiquement lors de la manipulation événement onSelecting:

protected void LinqDataSource3_OnSelecting(object sender, LinqDataSourceSelectEventArgs e) 
    { 
     MyModelDataContext context = new MyModelDataContext(); 
     ASPxGridView grid = ASPxPageControl1.TabPages[3].FindControl("ASPxGridView2") as ASPxGridView; 


     if(grid.Columns.Count == 0){ 
      GridViewDataTextColumn txtColumn1 = new GridViewDataTextColumn(); 
      GridViewDataTextColumn txtColumn2 = new GridViewDataTextColumn(); 
      txtColumn1.FieldName = "UserId"; 
      txtColumn2.FieldName = "FirstName"; 

      grid.Columns.Add(txtColumn1); 
      grid.Columns.Add(txtColumn2);  
     } 

     e.Result = from u in context.Users select new { UserId = u.UserId, FirstName = u.FirstName }; 
    } 

Tout est fait simplement pour tester parce que mon idée est d'avoir une solution qui permet de utilisez linqDataSource comme source de données pour ASPxGridView mais joignez 2 ou 3 tables et affichez les résultats dans cette grille.

Ce que je veux demander est si sa bonne solution ou est-il un autre meilleur moyen de présenter quelques vues faites à partir de quelques tables par join?

deuxième question est que j'ai les utilisateurs et le groupe et je voudrais avoir une table où j'aurais deux colonnes Nom et type

Pour le type de groupes seraient par groupe et pour le type d'utilisateurs serait l'utilisateur.

Je n'ai pas une telle table dans ma base de données

Est-il possible de créer des classes spécifiques. Créer une liste d'objets de cette classe et le remplir en utilisant linq query et l'utiliser comme source de données linq pour cette grille?

clas seraient:

pseudocode:

Class MyClass { 
string Type; 
string Name; 
} 

ou est-il une autre façon de créer une telle table?

Merci beaucoup pour l'aide bye

Répondre

1

répondre à votre première question, je voudrais vous dire que le code pour créer des colonnes est préférable de passer à l'événement Page_Load.

En ce qui concerne votre deuxième question. Je pense que c'est une bonne solution pour fournir un IQueriable personnalisé dans l'événement Selecting de l'objet LinqDataSource. Vous pouvez y récupérer des données de plusieurs tables. Pour un exemple, veuillez vous référer à:

Select from multiple table using LINQ