C# 在表中显示DataRow结果
我很难让DataRow结果显示在局部视图的表中。基本上,我要做的是将SQL查询的结果传递给局部视图,并在表中显示结果。请注意,每次结果都会有所不同,因此我无法硬编码任何列名,它们必须由我的代码动态创建 这是我的控制器操作,其目的是运行sql查询并将结果传递给相关的局部视图。请注意,连接字符串已从代码中删除,因为它包含用户名和密码,但它存在并正在处理我的代码,还请注意,我已对此进行调试,并且我返回的列表中包含了我预期的数据C# 在表中显示DataRow结果,c#,asp.net-mvc,asp.net-mvc-4,C#,Asp.net Mvc,Asp.net Mvc 4,我很难让DataRow结果显示在局部视图的表中。基本上,我要做的是将SQL查询的结果传递给局部视图,并在表中显示结果。请注意,每次结果都会有所不同,因此我无法硬编码任何列名,它们必须由我的代码动态创建 这是我的控制器操作,其目的是运行sql查询并将结果传递给相关的局部视图。请注意,连接字符串已从代码中删除,因为它包含用户名和密码,但它存在并正在处理我的代码,还请注意,我已对此进行调试,并且我返回的列表中包含了我预期的数据 List<DataRow> list = null; str
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);
List=null;
string connString=“连接字符串在这里”;
使用(SqlConnection conn=newsqlconnection(connString))
{
使用(SqlCommand objCommand=newsqlcommand(custSQL,conn))
{
objCommand.CommandType=CommandType.Text;
DataTable dt=新的DataTable();
SqlDataAdapter adp=新的SqlDataAdapter(objCommand);
conn.Open();
自动进料(dt);
如果(dt!=null)
{
list=dt.AsEnumerable().ToList();
}
}
}
返回PartialView(“\u CustomSQL”,列表);
这是视图,请注意,我在DataRow和DataColumn下遇到红线错误。我编写此代码只是为了更好地说明我试图实现的目标,即在html样式表中显示SQL查询的结果:
@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>
@model System.Collections.Generic.List
@foreach(Model.Columns中的数据列col)
{
@col.ColumnName
}
@foreach(Model.Rows中的数据行)
{
@foreach(Model.Columns中的数据列col)
{
@行[列名称]
}
}
您正在传递一个“列表”作为模型,因此您的视图应该是每个数据行的foreach:
@model System.Collections.Generic.List<System.Data.DataRow>
<table>
<thead>
<tr>
@foreach (System.Data.DataRow row in Model)
{
foreach(System.Data.DataColumn col in row.Columns)
{
<th>@col.ColumnName</th>
}
}
</tr>
</thead>
<tbody>
@foreach (System.Data.DataRow row in Model)
{
<tr>
@foreach (DataColumn col in Model.Columns)
{
<td>@row[col.ColumnName]</td>
}
</tr>
}
</tbody>
</table>
@model System.Collections.Generic.List
@foreach(模型中的System.Data.DataRow行)
{
foreach(行.列中的System.Data.DataColumn列)
{
@col.ColumnName
}
}
@foreach(模型中的System.Data.DataRow行)
{
@foreach(Model.Columns中的数据列col)
{
@行[列名称]
}
}
传递数据表
:
return PartialView("_CustomSQL", dt); // dt would be out of scope in your code and you'll manage that
在你看来:
@model System.Data.DataTable
@using System.Data
<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>
@model System.Data.DataTable
@使用系统数据
@foreach(Model.Columns中的数据列col)
{
@col.ColumnName
}
@foreach(Model.Rows中的数据行)
{
@foreach(Model.Columns中的数据列col)
{
@行[列名称]
}
}
最好在视图中使用ViewModel,而不是数据行列表。我将创建一个ViewModel,以反映视图应该呈现的内容。在控制器中,从数据库中获取值,填充ViewModel并将其传递给视图。我在DataColumn和Model下得到红线错误。Columns,我把它们放进去只是为了更好地说明我正在尝试做的事情,它仍然在DataRow和DataColumn下给出错误,我是否缺少using语句?有两件事
DataRow
不包含列的定义。在您的第二个foreach
,col
不存在使用您的代码时,我能够显示表格标题,但无法显示表格数据,您有“@row[coll.ColumnName]”这是否类似于ColumnData?@CathalO'Donnell是的,它检索了当前行的列值。可以应用于字符串()
<代码> >行[Cal.CalnNosi]。toStrug()/Case> @ Casala'Dunnle作为一个旁注,您确实需要考虑使用VIEW模型。