Elvally Boubacar Ответов: 0

Здравствуйте, как я могу получить представление о MVC C# для моего динамического pivot


у меня есть таблица, и я поворачиваю ее на sql server, но в want ton get a mvc view я использую динамический свод для своих данных, потому что у меня есть несколько(недель)
я хочу повернуть его на c# и отобразить свои данные в представлении mvc.

мой источник данных : imgt.PNG - Google Диск[^]


и мой сводный результат :imgt.PNG - Google Диск[^]


ниже моего динамического стержня.
спасибо





USE [YMOReporting]
GO
/****** Object:  StoredProcedure [dbo].[test]    Script Date: 28/11/2017 13:49:15 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[test]

AS
BEGIN
DECLARE @cols AS NVARCHAR(MAX),
        @query  AS NVARCHAR(MAX), 
		@PivotColumnsToSelect AS NVARCHAR(MAX);

SELECT @cols = STUFF((SELECT DISTINCT ',' + QUOTENAME([Week]) 
FROM  OpenOrdersWeekly_View FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'),1,1,'')
SET @query = 'SELECT *
            INTO MyTabTest from 
            (
                SELECT [Planner], [Vendor Location],[Bulk Material], [Value], [Week]

                FROM OpenOrdersWeekly_View
           ) x
            pivot 
            (
                 SUM([Value])
                for [Week] in (' + @cols + ')
            ) p  ORDER BY [Week];'


EXECUTE(@query)
SELECT * FROM MyTabTest
DROP TABLE MyTabTest
END


Что я уже пробовал:

я пробую код ниже, но моя модель возвращает null, поэтому я не могу отобразить результат на своем представлении





using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using YMOReporting.Models;
using System.Data.SqlClient;
 
namespace YMOReporting.Controllers.Reportings
{
    public class Proc1Controller : Controller
    {
        private YMOReportingConnex db = new YMOReportingConnex();
 
            // GET: Proc1 : stored for a dynamic pivot
            public ActionResult Index()
            {
                return View();
            }
        public DataTable PivotTableView()
        {
            db.GetProc1().ToList();
 
            DataTable dt = new DataTable();
 
            //GetProc1() return All data for Table.
            var data = db.GetProc1().ToList();
 
            //Applying linq for geeting pivot output
            var d = (from f in data
                     group f by new { f.Planner, f.Vendor_Location, f.Bulk_Material }
                into myGroup
                     where myGroup.Count() > 0
                     select new
                     {
                         myGroup.Key.Planner,
                         myGroup.Key.Vendor_Location,
                         myGroup.Key.Bulk_Material,
                         subject = myGroup.GroupBy(f => f.Week).Select
                             (m => new { Sub = m.Key, Value = m.Sum(c => c.Value) })
                     }).ToList();
 
            var sub = db.GetProc1().ToList();
            // Distinct Week Like Below
            //Creating array for adding dynamic columns
            ArrayList objDataColumn = new ArrayList();
 
            if (data.Count() > 0)
            {
                //Three column are fix "Planner","Vendor_Location","Bulk_Material".
                objDataColumn.Add("Planner");
                objDataColumn.Add("Vendor_Location");
                objDataColumn.Add("Bulk_Material");
 
                //Add Subject Name as column in Datatable
                for (int i = 0; i < sub.Count; i++)
                {
                    objDataColumn.Add(sub[i].Week);
                }
 
                //Add dynamic columns name to datatable dt
                for (int i = 0; i < objDataColumn.Count; i++)
                {
                    dt.Columns.Add(objDataColumn[i].ToString());
                }
 
                //Add data into datatable with respect to dynamic columns and dynamic data
                for (int i = 0; i < d.Count; i++)
                {
                    List<string> tempList = new List<string>();
                    tempList.Add(d[i].Planner.ToString());
                    tempList.Add(d[i].Vendor_Location.ToString());
                    tempList.Add(d[i].Bulk_Material.ToString());
 
                    var res = d[i].subject.ToList();
                    for (int j = 0; j < res.Count; j++)
                    {
                        tempList.Add(res[j].Value.ToString());
                    }
 
                    dt.Rows.Add(tempList.ToArray<string>());
                }
 
            }
            return dt;
 
        }
 
    }
}

0 Ответов