2014-04-22 5 views
0

그룹화 기준을 사용하는 LINQ 쿼리가 있으며 아래 쿼리를 사용하여 GridView를 바인딩하고 있습니다. 그러나 GridView가 제대로 바인딩되지 않습니다.Gridview가 올바르게 바인딩되지 않았습니다.

System.Linq.Enumerable + WhereSelectEnumerableIterator 2[<>f__AnonymousType652 6 System.Nullable`1 [선택 System.Int32, 선택 System.String, 선택 System.String, 선택 System.String 시스템을 모든 행에서, 아래와 같이 도시 .String, 선택 System.Int32, 선택 System.String]

내 aspx 페이지는

<Columns> 
    <asp:TemplateField HeaderText="Sl no." ItemStyle-HorizontalAlign="Center"> 
    <ItemTemplate> 
     <div style="margin: 0px auto; width: auto;"> 
     <asp:Label ID="lblslno" runat="server" Text='<%#Container.DisplayIndex+1 %>'>'></asp:Label> 
     <asp:HiddenField ID="hf" runat="server" Value='<%#Eval("EmpId") %>' /> 
     </div> 
    </ItemTemplate> 
    </asp:TemplateField> 
    <asp:BoundField HeaderText="Employee Code." DataField="EmpCode" ItemStyle-HorizontalAlign="Center" /> 
    <asp:BoundField HeaderText="Employee Name" DataField="Name" /> 
    <asp:BoundField HeaderText="Department" DataField="DeptName" /> 
    <asp:BoundField HeaderText="Designation" DataField="DesigName" /> 
    <asp:TemplateField HeaderText="Total Marks" ItemStyle-HorizontalAlign="Center"> 
    <ItemTemplate> 
     <asp:Label ID="lblTotalMarks" runat="server" CssClass="Label" Text='<%#Eval("Total_Mark") %>'></asp:Label> 
    </ItemTemplate> 
    </asp:TemplateField> 
    <asp:TemplateField HeaderText="Marks Secured" ItemStyle-HorizontalAlign="Center"> 
    <ItemTemplate> 
     <asp:Label ID="lblMarksSecured" runat="server" CssClass="Label" Text='<%#Eval("Total_Mark") %>'></asp:Label> 
    </ItemTemplate> 
    </asp:TemplateField> 
    </Columns> 

이며, 내 코드 뒤에이

var query = (from a in TraningScheduleDetails 
        from b in TraningAnshwerSheet 
        from c in TraningAnshwerSheetDetails 
        from d in EmpProfessionalDetails 
        from e in EmpProfessionalJobDetails 
        from f in Department 
        from g in Designation 
        where a.TrainingScheduleDetailId == int.Parse(ddlExamDate.SelectedValue) 
        && a.TrainingScheduleDetailId == b.TrainingScheduleDetailId 
        && b.TrainingAnswerSheetId == c.TrainingAnswerSheetId 
        && b.EmployeeProfessionalDetailId == d.EmployeeProfessionalDetailId 
        && d.EmployeeProfessionalDetailId == e.EmployeeProfessionalDetailId 
        && e.DepartmentId == f.DepartmentId 
        && e.DesignationId == g.DesignationId 
        select new 
        { 
         b.EmployeeProfessionalDetailId, 
         Name = d.FirstName + " " + d.MiddleName + " " + d.LastName, 
         d.EmployeeCode, 
         f.DepartmentName, 
         g.DesignationName, 
         Total_Mark = total_Mark, 
        }).ToList(); 
     var query2=(from a in query group a by a.EmployeeProfessionalDetailId into b 
        select new 
        { 
         EmpId=b.Key,        
         Name=b.Select(c =>c.Name), 
         EmpCode=b.Select(c=>c.EmployeeCode), 
         DeptName=b.Select(c=>c.DepartmentName), 
         DesigName=b.Select(c=>c.DesignationName), 
         Total_Mark=b.Select(c=>c.Total_Mark),        
        }).ToList();   
     grdEmployeeDetails.DataSource = query2; 
     grdEmployeeDetails.DataBind(); 
같다
+0

익명 형식을 만드는 대신 'Employee' 개체를 사용 해본 적이 있습니까? –

답변

0

그리드 바인딩을위한 새 클래스를 정의하십시오. 필요한 속성을 가진 'EmployeeResults'. 그리드에 바인딩 할 개체 목록을 만듭니다.

List<EmployeeResults> employeeResults = Linq query. //Cast linq results to EmployeeResults 
grdEmployeeDetails.DataSource = employeeResults; 
grdEmployeeDetails.DataBind(); 
관련 문제