C# 在表中显示DataRow结果

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

我很难让DataRow结果显示在局部视图的表中。基本上,我要做的是将SQL查询的结果传递给局部视图,并在表中显示结果。请注意,每次结果都会有所不同,因此我无法硬编码任何列名,它们必须由我的代码动态创建

这是我的控制器操作,其目的是运行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);
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模型。