Ajaxを使用してMVCのテーブルを更新したい。私はすでにajaxを使用してデータベースにデータを挿入しました。新しい行を挿入した後、テーブルを更新したいだけです。
PS。検索を試みましたが、何も役に立ちませんでした。まだ混乱しています。
Here is my code:
Main page View:
<div id="theTable">
@Html.Partial("_IPTable")
</div>
<script src="~/Scripts/jquery-1.10.2.min.js"></script>
<script src="~/Scripts/Admin.js"></script>"`
Partial page View:
<table id="table">`
<tr>
<th>ID</th>
<th>Line</th>
<th>Supplier</th>
</tr>
@foreach (var item in ViewBag.IPTable)`
{
<tr>
<td>
@item.ID
</td>
<td>
@item.Line
</td>
<td>
@item.Supplier
</td>
</tr>
}
</table>enter code here
Controller view:
public ActionResult Admin()
{
// get data from database
return View();
}
public ActionResult _IPTable()
{
return PartialView();
}
新しいレコードを挿入するためのAjaxコード:
<script>
$(document).ready(function () {
//function will be called on button click having id btnsave
$("#btnSave").click(function () {
$.ajax(
{
type: "POST", //HTTP POST Method
url: "AdminInsert", // Controller/View
data: { //Passing data
//Reading text box values using Jquery
Line: $("#txtLine").val(),
Supplier: $("#txtSupplier").val()
}
});
});
}); </script>
テーブルのレンダリングに必要なHTMLマークアップを返すアクションメソッドを作成できます。テーブルデータを渡すためのビューモデルを作成しましょう。
public class ItemVm
{
public string ItemId {set;get;}
public string Line {set;get;}
public string Supplier {set;get;}
}
次に、アクションメソッドで、テーブルからデータを取得し、ビューモデルクラスのリストにロードして、ビューに送信します。私はあなたのテーブル構造/データアクセスメカニズムについてよくわからないので。アイテムをハードコーディングします。実際のデータに置き換えることができます。
public ActionResult TableData()
{
var items = new List<ItemVm>{
new ItemVm { ItemId="A1", Line="L1", Supplier="S1" },
new ItemVm { ItemId="A2", Line="L2", Supplier="S2" }
};
return PartialView("TableData",items);
}
次に、部分ビューがビューモデルのコレクションに強く入力されていることを確認します
@model List<ItemVm>
<table>
@foreach(var item in Model)
{
<tr><td>@item.ItemId</td><td>@item.Line</td></td>@item.Supplier</td></tr>
}
</table>
これで、このアクションメソッドを呼び出して、返される応答でDOMを更新するだけです。これは、新しいレコードを挿入するajax呼び出しのsuccess
イベントハンドラーで実行できます。 jQuery load
メソッドを使用して、DOM内の関連する要素を更新できます。
$(document).ready(function () {
$("#btnSave").click(function () {
$.ajax(
{
type: "POST", //HTTP POST Method
url: "AdminInsert", // Controller/View
data: { //Passing data
//Reading text box values using Jquery
Line: $("#txtLine").val(),
Supplier: $("#txtSupplier").val()
}
}).success(function() {
$("#theTable").load("/YourControllerName/TableData");
});
});
これで、最初のビューとして、新しい部分ビューを使用できます。ただし、ItemVm
のリストを想定しているため、ViewBagを介して渡すのではなく、明示的に渡す必要があります。