在表中显示DataRow结果

时间:2016-06-10 14:32:37

标签: c# asp.net-mvc asp.net-mvc-4

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

这是我的控制器操作,其目的是运行SQL查询并将结果传递给有问题的部分视图。请注意,连接字符串已从代码中删除,因为它包含用户名和密码,但它存在并处理我的代码,还请注意我已经调试了这个并且我返回的列表具有我期望它拥有的数据。 / p>

GET /users?query=asd@gmail.com

这是视图,注意我在DataRow和DataColumn下遇到红线错误我只编写了这段代码,以便更好地说明我想要实现的内容,即在html样式表中显示我的SQL查询的结果: / p>

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

2 个答案:

答案 0 :(得分:1)

您传递的是“List”作为模型,因此您的视图应该是每个DataRow的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>

答案 1 :(得分:1)

传递DataTable

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>