2012-04-13 5 views
-1

私はデータベースから各ユーザーの合計葉を数えたいと思っています。 Asp.Net MVC-3(Aspx)のtelerikグリッドビューで表示します。MVC-3で各ユーザのリーフ(データベースからのフェッチ)の合計を個別にカウントする方法は?

私は2つの列を持つgridviewを持っています。最初の列にはすべての従業員/ユーザーの名前が表示され、2列目にはそのユーザーの合計リーフが表示されます。

データベースは以下の通りである

leave_master

leave_id(プライマリキー) USER_ID(表user_masterのUSER_IDと外部キー) leave_days

user_master

user_id(主キー) 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> 

第二ファイル

名 - - 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> 
user_real_name

私のモデルファイルが

名以下の通りです

マイ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_は-------------- 10

XYZ ----------------

ABCを残し - 12

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

だから私はそれを行うことができますか?

事前のおかげで...

+0

私のすべての質問は誰が投票していますか? – Dip

答えて

0

あなたが日集計する場合は、クエリでleave_idを持つことはできません。 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内のすべてのユーザーに対して1つのオブジェクトを返します。 –

関連する問題