上一篇我們已經能夠從我們資料庫上抓出我們建立的菜單了,
這篇會跟大家一起把我們抓出來的畫面顯示在網頁上。
甚麼是JQuery? 想必有寫過網頁的都知道JavaScript,
這套語言雖然非常的強大,但是語法寫起來十分的複雜。
而JQuery就是幫我解決這個問題的一個套件,
其中最大的好處就是JQuery的選擇器(selector),
幫我大大降低寫一拖拉庫的語句只為了找到一個element。
除此之外,使用JQuery還有另外一個最大的原因就是...
專案建置的時候就幫我載入好了。
雖然專案已經載入好了,不過我們還是有一些地方需要修改一下。
_MainLayout.cshtml
<script src="~/lib/jquery/dist/jquery.min.js"></script>
<body>
裡面的第一列)為了之後開發的彈性,我們先寫一個新增菜色的方法。
讓我們之後要加入我們資料庫中的菜色時,只需要呼叫這個方法即可。
Customer.cshtml
tbody
的地方給他一個id<tbody id="menu_body">
我們等一下在呼叫的時候比較方便
3. 撰寫script語法
程式碼:
<script>
function addItemRow(uid,item,price) {
var data = `
<tr id=`+ uid +`>
<td> `+ item +`</td>
<td>`+ price +`</td>
<td><input type="text"></td>
</tr>
`
$('#menu_body').append(data);
}
//這是測試用的資料
addItemRow('6', '超豐富炒飯', '190');
</script>
當之後呼叫addItemRow()
的時候會根據我們傳進來的參數新增一筆資料。
3. 測試一下我們寫的function()是否可以正常執行
4. 確定測試沒問題後,刪除測試資料。
為了避免遇到太多資料型態的問題,很多時候我們都會對資料做序列or反序列。
這樣我們往後對前後台的資料處理就只需要對json處理就好。
(這篇所使用的序列化方式都是指json)
HomeController.cs
Customer()
裡面加入string jsonData = JsonConvert.SerializeObject(list);
Customer()
完整程式碼public IActionResult Customer()
{
//連線設定
SqlSugarClient db = new SqlSugarClient(new ConnectionConfig()
{
//連線字串
ConnectionString = "Server=.\\SQLEXPRESS;Initial Catalog=WebMenu;user id=webmenu;password=00000;Integrated Security=False",
DbType = DbType.SqlServer,//連線類型
IsAutoCloseConnection = true //自動關閉連線
});
//當執行時,觸發事件
db.Aop.OnLogExecuting = (sql, pars) =>
{
Console.WriteLine(sql);//查看SQL語法
};
var list = db.Queryable<Menu>().ToList();
foreach(var menu in list){
menu.Item = menu.Item.Trim();
Console.WriteLine(menu.Item);
}
string jsonData = JsonConvert.SerializeObject(list);
Console.WriteLine(jsonData);
ViewBag.menuData = jsonData;
return View();
}
因為.net Core有太多版本,有些語法棄用得太快了,
所以我們採用把資料藏在隱藏的element裡面的方式,來接收資料。
<input id="menu_data" style="visibility:hidden" value=@ViewBag.menuData />
(這邊一樣給他一個id方便等一下使用)
3. 將我們剛剛menu_data
的資料轉成map
var menuData = JSON.parse($("#menu_data").val())
menuData.forEach(function (row) {
addItemRow(row.Uid, row.Item, row.Price);
});
這樣就完成囉。
附上script部分的完整程式碼:
<script>
function addItemRow(uid, item, price) {
var data = `
<tr id=`+ uid + `>
<td> `+ item + `</td>
<td>`+ price + `</td>
<td><input type="text"></td>
</tr>
`
$('#menu_body').append(data);
}
//將資料轉成 map
var menuData = JSON.parse($("#menu_data").val())
menuData.forEach(function (row) {
addItemRow(row.Uid, row.Item, row.Price);
});
</script>
JQery 與 Bootstrap中都有提供table連接資料的方法,使用上很便利也很強大,
不過因為我們這次要使用到的功能比較簡便,所以這邊就不展示這兩個套件的功能了。