-1

データベースから各ユーザーの合計リーフをカウントしたいと考えています。Asp.Net MVC-3 (Aspx) のテレリック グリッドビューに表示したいと考えています。

私は2列のグリッドビューを持っています。最初の列にはすべての従業員/ユーザーの名前が表示され、2 番目の列にはそのユーザーの合計休暇が表示されます。

私のデータベースは以下の通りです

leave_master

leave_id (主キー) user_id (テーブル user_master の user_id を持つ外部キー) leave_days

ユーザーマスター

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>

私のコントローラファイル名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>

私の見解は

名前LeaveShow.ascx

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

のように出力したい

名前---------------total_葉

abc-------------------------------- 10

xyz---------------- 12

pqr---------------- 06

では、どうすればそれを行うことができますか?

前もって感謝します...

4

1 に答える 1

0

leave_id日数を集計する場合は、クエリにを含めることはできません。モデルの名前もに変更leave_daysします。私はあなたのオブジェクトにと呼ばれるが存在すると仮定します。LeaveGridFetchのクエリを次のように変更します。LeaveGridViewtotal_leave_daysIEnumerable<leave_master>user_masterleave_masters

        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();
于 2012-04-13T08:59:17.620 に答える