2017-12-15 10 views
0

합니다 GridViewAsp.Net는 열 병합 내가 Datables 및 목록과의 GridView를 생성하고 난 문제 가지고의 GridView 템플릿

내의 GridView는 반복적 인 답변을해야합니다. 1 id_template에는 1 개의 name_template이 있지만 많은 id_forms (그리고 많은 이름 : 1 개의 이름에 대해 1 개의 id)를 가질 수 있습니다. 나는 1 개의 id, 1 개의 이름 및 그들의 ID와 이름을 갖도록 병합하고 싶습니다. 내 코드가 같다 :

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(); 

는 오프 코스, 1 이드 "엔티티"ONT, 그래서 내가 각 엔티티에 대해 동일한 "테이블 디자인"을 갖도록 템플릿을하고 싶습니다. 데이터베이스 데이터 소스없이 만들 수 있습니까?

답변

1

당신은 (당신이 이러한 특성을 가진 하나의 클래스의 사용이없는 이유는 무엇입니까?) 모든 목록을 압축 한 다음 원하는 그룹을 얻을 수 GroupBy을 사용할 수

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)));