将整行添加到数据表 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);
}
根据 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)