Мне трудно получить результаты DataRow для отображения в таблице на частичном представлении. В основном то, что я пытаюсь сделать, это передать результаты SQL-запроса частичному представлению и отобразить результаты в таблице. Обратите внимание, что результаты будут меняться каждый раз, поэтому я не могу жестко закодировать имена столбцов, они должны быть динамически созданы моим кодом.Отображение результатов DataRow в таблице
Это мое действие контроллера, его цель - запустить sql-запрос и передать результаты в частичное представление. Обратите внимание, что строка соединения была удалена из кода, так как она содержит имя пользователя и пароль, но она присутствует и работает над моим кодом. Также обратите внимание, что я отлаживал это, и список, который я возвращаю, имеет данные, которые я ожидал от него.
List<DataRow> list = null;
string connString = "Connection String Goes Here";
using (SqlConnection conn = new SqlConnection(connString))
{
using (SqlCommand objCommand = new SqlCommand(custSQL, conn))
{
objCommand.CommandType = CommandType.Text;
DataTable dt = new DataTable();
SqlDataAdapter adp = new SqlDataAdapter(objCommand);
conn.Open();
adp.Fill(dt);
if (dt != null)
{
list = dt.AsEnumerable().ToList();
}
}
}
return PartialView("_CustomSQL", list);
Это мнение, Обратите внимание, я получаю красные ошибки линии под DataRow и DataColumn я только написал этот код, чтобы лучше проиллюстрировать то, что я пытаюсь достичь, который предназначен для отображения результатов моего SQL запроса в HTML стиль таблица:
@model System.Collections.Generic.List<System.Data.DataRow>
<table>
<thead>
<tr>
@foreach (DataColumn col in Model.Columns)
{
<th>@col.ColumnName</th>
}
</tr>
</thead>
<tbody>
@foreach (DataRow row in Model.Rows)
{
<tr>
@foreach (DataColumn col in Model.Columns)
{
<td>@row[col.ColumnName]</td>
}
</tr>
}
</tbody>
</table>
Было бы лучше использовать для ViewModel вместо вашего просмотра списка DataRows. Я бы создал ViewModel, который отражает то, что ваш взгляд должен отображать. В своем контроллере получите значения из своего дБ, заселите ViewModel и передайте их в свое представление. – nick