Elvally Boubacar Ответов: 1

Как создать представление MVC из динамической модели в C#


I have a stored sql server getting a dynamic pivot from table 
now i want to display this in a view in mvc
i using asp.net and MVC5
thanks for all.


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

я попробовал код ниже

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

Richard Deeming

Репост
Теперь это ваша третья копия этого вопроса:
https://www.codeproject.com/Questions/1216102/How-to-create-view-for-a-dynamically-columns-and-r[^]
https://www.codeproject.com/Questions/1217645/Hello-how-can-I-get-a-view-on-MVC-Csharp-for-my-dy[^]

Если вы хотите обновить свой вопрос с дополнительной информацией, Нажмите зеленую ссылку "улучшить вопрос" в нижней части вопроса. НЕ опубликуйте свое обновление как новый вопрос!

1 Ответов

Рейтинг:
0

F-ES Sitecore

Я погуглил "mvc view show datatable", и это был первый результат

https://www.aspsnippets.com/Articles/Display-Show-DataSets-and-DataTables-in-View-in-ASPNet-MVC-Razor.aspx[^]

Если это не соответствует вашим потребностям, то погуглите сами, чтобы найти больше. Обратите внимание, что не имеет значения, как заполняется datatable, поэтому не отклоняйте результаты, которые не включают сводные таблицы.


Elvally Boubacar

привет спасибо за ваш ответ но у меня есть динамическая модель и я хочу отображать данные на mvc view
я попробовал код ниже, но ничего не вышло


список моделей&л@; словарь на<строка, объект&ГТ;&ГТ;
@{
Видовой мешок.Название = "DynamicIndex";
Layout = "~/Views/Shared/_Layout.cshtml";
}
@for (int i = 0; i < objDataColumn.Граф; i++)
{

ДТ.колонны.Добавить(objDataColumn[i].Метод toString());
}

@for (int i = 0; i < d.Count; i++)
{
Доктор строкаданных = ДТ.Невров();
Список<строка>
tempList = новый список<string>
();
var res = d[i].тема.Список();
@for (int j = 0; j < res.Count; j++)
{
tempList.Добавить(ВИЭ[Дж].Значение.Метод toString());
}
int k = 0;
@ foreach (var v в tempList)
{
к++;
}
ДТ.Строк.Добавить(д-р);
// dt.Rows.Add(tempList.ToArray<string>
());
}
tempList.Add(d[i].Планировщик.Метод toString()); tempList.Добавить(д[Я].Vendor_Location.Метод toString()); tempList.Добавить(д[Я].Bulk_Material.ToString()); dr[k] = v. toString();

F-ES Sitecore

Используйте DataTable в качестве модели, которую вы передаете в представление.

Elvally Boubacar

да я уже использовал datatable но столкнулся с ошибкой вроде того что моя модель становится нулевой
на мой взгляд с DataTable

@использование System.Data
@model DataTable


@foreach (DataColumn col в модели.Столбцы)
{
}

@по каждому элементу (строке datarow в модели.Строк)
{
@foreach (DataColumn col в модели.Столбцы)
{
}
}
@седло.Имя_столбца@строка[колонка.Имя_столбца]

F-ES Sitecore

Он равен нулю, потому что вы не передаете модель в представление

возвращение смотреть();

вам нужно передать модель в качестве параметра

return View(PivotTableView());

Elvally Boubacar

теперь я получаю эту ошибку



System.Web.Mvc.WebViewPage<tmodel>.Модель.вам retournée нуль.


в @foreach (DataColumn col в модели.Колонки) на мой взгляд