将整行添加到数据表 MVC4

本文关键字:数据表 MVC4 添加 | 更新日期: 2023-09-27 18:31:43

我是MVC的新手,我正在尝试从存储过程响应构建DataTable并将其传递回我的视图。对于行,我构建了一个充满单元格值的逗号分隔字符串。

我遇到的问题是字符串没有被逗号解析,并且有效地将整个字符串传递到每行的第一个单元格中。

构建由每列的各个值组成的行的正确方法是什么?列数、列名和返回的记录数都是可变的。

    public ActionResult dataSet(string table, string key, string search)
    {
        SqlDataReader rdr = null;
        SqlConnection con = new SqlConnection("Connection stuff");
        SqlCommand cmd = new SqlCommand();
        cmd = new SqlCommand("dbo.USP_getDataSet", con);
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.Parameters.AddWithValue("@key", key);
        cmd.Parameters.AddWithValue("@table", table);
        cmd.Parameters.AddWithValue("@search", search);
        con.Open();
        DataTable theTable = new DataTable();
        try
        {
            rdr = cmd.ExecuteReader();
            while (rdr.Read())
            {
                int count = rdr.FieldCount;
                string rowString = "";
                int intRows = theTable.Columns.Count;
                //Build columns on first pass through
                if (intRows == 0){
                    for (int i = 0; i < count; i++){
                        theTable.Columns.Add(Convert.ToString(rdr.GetName(i).TrimEnd()), typeof(string));                    
                    }
                }
                //Grab all values for each column
                for (int i = 0; i < count; i++){                        
                    rowString += ''"' + (Convert.ToString(rdr.GetValue(i)).TrimEnd()) + ''"' + ", ";                        
                }
                //Remove trailing delimiter
                string finishedRow = rowString.Substring(0, rowString.Length - 2);
                //Add the full row for each time through reader
                theTable.Rows.Add(finishedRow);
           } 
        }
        finally
        {
            if (rdr != null)
            { rdr.Close(); }
            if (con != null)
            { con.Close(); }
        }
        return View(theTable);
    }

将整行添加到数据表 MVC4

根据 DataRowCollection.Add(params Object[] values) 方法的文档,传入的每个值都将填充每个单元格。 由于您传入的是单个值,因此它是单元格的值。

您可能希望:

var cells = new object[count];
for (int i = 0; i < count; i++)
{                        
  cells[i] = rdr.GetString(i).Trim() + "'"
}
theTable.Rows.Add(cells)