2017-12-15 3 views
0

ich eine Gridview mit Datables und Listen und ich habe ein Problem: GridViewAsp.Net Merge Spalten und machen ein Gridview-Vorlage

Meine Gridview haben sich wiederholende Antworten. 1 id_template hat 1 name_template, kann aber viele id_forms (und viele Namen: 1 id für 1 name) haben. Ich möchte es zusammenführen, um 1 ID, 1 Name und ihre IDs und Namen zu haben. Mein Code, wie das ist:

DataTable dt = new DataTable(); 
     dt.Columns.Add("Id_Template"); 
     dt.Columns.Add("Name_Template"); 
     dt.Columns.Add("Id_Form_List"); 
     dt.Columns.Add("Name_Form_List"); 

     for (int i = 0; i < listeIdForm.Count; i++) 
     { 
      dt.Rows.Add(listeIdTemplate[0], listeNomTemplate[0], listeIdForm[i], listeNomForm[i]); 
     } 
     GridView3.DataSource = dt; 
     GridView3.DataBind(); 

weg vom Kurs, 1 Id ont „Entity“ ist, so würde ich eine Vorlage machen möchte, um die gleiche „Tisch-Design“ für jede Einheit zu haben. Ist es möglich, das ohne Datenbank Datenquelle zu machen?

Antwort

1

Sie könnten alle diese Listen zip (warum Sie mit diesen Eigenschaften keinen einzigen classs haben?) Und dann GroupBy verwenden, um die gewünschten Gruppen zu erhalten:

var tableSource = listeIdTemplate 
    .Zip(listeNomTemplate, (id, nom) => new { id, nom }) 
    .Zip(listeIdForm, (x, idForm) => new { x, idForm }) 
    .Zip(listeNomForm, (x, nomForm) => new { x.x.id, x.x.nom, x.idForm, nomForm }) 
    .GroupBy(x => new { x.id, x.nom }); 

foreach (var idNomGroup in tableSource) 
    dt.Rows.Add(
     idNomGroup.Key.id, 
     idNomGroup.Key.nom, 
     string.Join(",", idNomGroup.Select(x => x.idForm)), 
     string.Join(",", idNomGroup.Select(x => x.nomForm))); 
Verwandte Themen