2012-04-13 2 views
-1

나는 데이터베이스에서 각 사용자의 총 잎 수를 계산하려고합니다. Asp.Net MVC-3 (Aspx)에 telerik gridview로 표시하려고합니다.MVC-3에서 각 사용자의 리프 (데이터베이스에서 인출)의 총계를 개별적으로 계산하는 방법은 무엇입니까?

두 개의 열이있는 gridview가 있습니다. 첫 번째 열에는 모든 직원/사용자의 이름이 표시되고 두 번째 열에는 해당 사용자의 총 잎이 표시됩니다.

데이터베이스은 다음과 같다

leave_master

leave_id (기본 키) USER_ID (테이블 user_master의 USER_ID와 외래 키) leave_days

user_master

user_id (기본 키) user_real_name

내 모델 파일입니다 같은 이름

아래 - LeaveGridview.cs

<pre> 

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.ComponentModel.DataAnnotations; 
using System.ComponentModel; 


namespace ProjectManagementSystem.Models 
{ 
    public class LeaveGridview 
    { 

     public int user_id { get; set; } 

     public string user_name { get; set; } 

     public string user_real_name { get; set; }  

     public int leave_id { get; set; } 

     public decimal leave_days { get; set; } 


    } 
} 
</pre> 

2 파일

이름 - LeaveGridviewFetch.cs

<pre> 
using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 

namespace ProjectManagementSystem.Models 
{ 

    public class LeaveGridviewFetch 
    { 



     public static IList&lt;LeaveGridview&gt; all() 
     { 
      IList&lt;LeaveGridview&gt; result = 
       (IList&lt;LeaveGridview&gt;)HttpContext.Current.Session["leave1"]; 

      if (result == null) 
      { 

       HttpContext.Current.Session["leave1"] = result = 
        (from l in new ProjectManagementSystemEntities3().leave_master 
        select new LeaveGridview 
        { 
         user_id = l.user_id, 
         leave_id = l.leave_id, 
         user_real_name = l.user_master.user_real_name, 



        }).ToList(); 

      } 
      return result; 
     } 
    } 
} 
</pre> 
,451,515,

내 contgroller 파일 이름 LeaveController.cs

<pre> 

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.Mvc; 
using ProjectManagementSystem.Models; 
using Telerik.Web.Mvc; 

namespace LeaveModule.Controllers 
{ 
    public class LeaveController : Controller 
    { 
     public ProjectManagementSystemEntities3 pb = new ProjectManagementSystemEntities3(); 

    public ActionResult LeaveShow() 
     { 
      var leave_master = pb.leave_master.Include("user_master"); 
      ViewBag.leave_id = new SelectList(pb.user_master, "user_id", "user_real_name"); 
      return View(leave_master.ToList()); 
     } 

[GridAction] 
     public ActionResult _SelectBatchEditing() 
     { 
      return View(new GridModel(LeaveGridviewFetch.all())); 
     } 

} 
} 

</pre> 

내보기

<pre> 

&lt;%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage" %&gt; 

&lt;asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server"&gt; 
    LeaveShow 
&lt;/asp:Content&gt; 

&lt;asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server"&gt; 

&lt;% Html.Telerik().Grid&lt;ProjectManagementSystem.Models.LeaveGridview&gt;() 
         .Name("grid") 
         .DataKeys(keys =&gt; 
         { 
          keys.Add(l =&gt; l.leave_id); 
         }) 

         .DataBinding(dataBinding =&gt; 
         dataBinding.Ajax() 
         .Select("_SelectBatchEditing", "Leave") // Leave is controller name 
         ) 

         .Columns(columns =&gt; 
         { 

          columns.Bound(l =&gt; l.user_real_name).Width(200); 

          columns.Bound(l =&gt; l.leave_days).Width(150); 

         }) 


         .Groupable() 
         .Pageable() 
         .Filterable() 
         .Render(); 

         %&gt; 


&lt;/asp:Content&gt; 


</pre> 

내가 싶어 LeaveShow.ascx

이름 입니다

이름 - 같은 출력 -------- ------ total_는 --------------

ABC ---------------- 10

XYZ 잎 - 12

PQR ---------------- 06

그래서 내가 그렇게 할 수 있습니까? 당신이 일을 집계 할 경우, 당신은 당신의 쿼리에서 leave_id을 가질 수 없습니다

+0

누가 내 모든 질문에 투표를하니? – Dip

답변

0

사전에

감사합니다 .... LeaveGridView 모델의 leave_days 이름을 total_leave_days으로 변경합니다. user_master 개체에 IEnumerable<leave_master>이 있고 leave_masters이라는 개체가 있다고 가정합니다.LeaveGridFetch의 쿼리를 다음으로 변경하십시오.

 HttpContext.Current.Session["leave1"] = result = 
       (from l in new ProjectManagementSystemEntities3().user_master 
       select new LeaveGridview 
       { 
        user_id = l.user_id, 
        user_real_name = l.user_real_name, 
        total_leave_days = l.leave_masters.Sum(i => i.leave_days) 
       }).ToList(); 
+0

이름은 무엇입니까? 이름을 한 번 이상 표시합니다. 그래서 휴가 일을 요약하지 않습니다. – Dip

+0

이 쿼리는 user_master의 모든 사용자에 대해 하나의 객체를 반환한다는 것을 이해하지 못합니다. –

관련 문제