對於MVC和一般編程,我非常陌生,而且我無法從SQL Server數據庫將數據加載到MVC3應用程序中。我無法讓它與模型一起工作,所以我只有一個控制器和一個視圖。代碼如下所示:將數據從SQL Server數據庫加載到DataTable中,並在MVC3中顯示圖表
控制器:
public ActionResult Datatable()
{
string conn = System.Configuration.ConfigurationManager.ConnectionStrings["SampleDBConn"].ToString();
SqlConnection connect = new SqlConnection(conn);
connect.Open();
SqlCommand RID = new SqlCommand("SELECT Request_ID FROM SampleDB.dbo.Transactions", connect);
SqlCommand Tdate = new SqlCommand("SELECT Trans_Date FROM SampleDB.dbo.Transactions", connect);
SqlCommand MID = new SqlCommand("SELECT Merchant_ID FROM SampleDB.dbo.Transactions", connect);
SqlCommand Ttype = new SqlCommand("SELECT Trans_Type FROM SampleDB.dbo.Transactions", connect);
SqlCommand Tamt = new SqlCommand("SELECT Total_Amt FROM SampleDB.dbo.Transactions", connect);
DataTable dt = new DataTable("MyTable");
dt.Columns.Add(new DataColumn("Request_ID", typeof(SqlCommand)));
dt.Columns.Add(new DataColumn("Trans_Date", typeof(SqlCommand)));
dt.Columns.Add(new DataColumn("Merchant_ID", typeof(SqlCommand)));
dt.Columns.Add(new DataColumn("Trans_Type", typeof(SqlCommand)));
dt.Columns.Add(new DataColumn("Total_Amt", typeof(SqlCommand)));
DataRow row = dt.NewRow();
row["Request_ID"] = RID;
row["Trans_Date"] = Tdate;
row["Merchant_ID"] = MID;
row["Trans_Type"] = Ttype;
row["Total_Amt"] = Tamt;
dt.Rows.Add(row);
connect.Close();
return View(dt);
}
查看:
@model System.Data.DataTable
@{
ViewBag.Title = "Datatable";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2> Datatable </h2>
< div id="header" ></div>
< br/>
< style type"text/css" >
#DT1{display:inline}
</style>
< table border="1" id="DT1" style="background-color: Lime" >
< thead style="background-color:Olive" >
<tr>
@foreach (System.Data.DataColumn col in Model.Columns)
{
<th>@col.Caption</th>
}
</tr>
</thead>
<tbody>
@foreach (System.Data.DataRow row in Model.Rows)
{
<tr>
@foreach (var cell in row.ItemArray)
{
<td>@cell.ToString()</td>
}
</tr>
}
</tbody>
</table>
結果表顯示每一列是這樣的:
其中 「REQUEST_ID」 是列標題和「System.Data.SqlClient.SqlCommand」是數據應該是的位置
我從另一個計算器解決方案中使用這種方法: Displaying standard DataTables in MVC
我的應用程序的最終目標是通過複選框或下拉列表中動態查詢我的數據庫顯示的圖表,我還需要爲能夠將數據導出到excel文件。如果有人對我應該如何處理這個問題有任何想法或建議,將不勝感激。
我已經能夠使用存儲過程使用此方法來靜態地創建圖表:
@{
ViewBag.Title = "Chart1";
}
<h2>Chart1</h2>
@{
var db = Database.Open("SampleDBConn");
var dbdata = db.Query("August2012byMerch");
var myChart = new Chart(width: 1100, height: 600, theme: ChartTheme.Green)
.AddTitle("Merchant Totals by Transaction Type: August 2012")
.AddSeries("Default",
xValue: dbdata, xField: "Transaction Type",
yValues: dbdata, yFields: "Total")
.Write();
db.Close();
}
謝謝!
在我看來,我認爲你應該嘗試從0. – Jorge
@Jorge瞭解框架我得到的框架。構建處理數據的模型,然後使用控制器作爲協調器將模型傳遞給視圖。然後視圖顯示數據。我剛剛爲此建立了模型,所以我試圖通過一種方法來了解可以做什麼和不可以做什麼 – gbills
通常,您的模型是一個簡單的POCO。與其試圖將DataTable用作模型,我會添加一個數據層(查看存儲庫和工作單元設計模式),返回您將在模型中使用的POCO。 EF非常適合這一點。 –