現在、ページに追加機能を実装しようとしています。現在、追加はすでに機能していますが、新しく追加された行をテーブルに表示するには、ページを更新する必要があります。
以下の私のコードを参照してください:
これが私のテーブルを生成する方法です:
<table class="webGrid" id="ProductsTable">
<tr>
<td><strong><span>ProductID</span></strong></td>
<td><strong><span>ProductName</span></strong></td>
<td><strong><span>Price</span></strong></td>
<td colspan="2"><strong><span>Action</span></strong></td>
</tr>
@foreach (var item in repository.GetAllProducts(ViewData["BranchCode"].ToString()))
{
<tr>
<td><span class="ProductID">@item.ProductID</span></td>
<td><span class="ProductName">@item.ProductName</span></td>
<td><span class="Price">@item.Price</span></td>
<td>@Html.ActionLink("Edit", "Edit", new { RecordID = item.RecordID }, new { @class = "editLink" })</td>
<td>@Html.ActionLink("Delete", "Delete", new { RecordID = item.RecordID }, new { @class = "editLink" })</td>
</tr>
}
現在、編集と削除はすでに正常に機能しています。以下は私が編集を行う方法です:
function update(data) {
if (data.Success == true) {
var parent = linkObj.closest("tr");
parent.find(".ProductID").html(data.Object.ProductID);
parent.find(".ProductName").html(data.Object.ProductName);
parent.find(".Price").html(data.Object.Price);
}
else {
$("#update-message").html(data.ErrorMessage);
$("#update-message").show();
}
}
今、私が使用しているeditjqueryとほぼ同じ追加機能を実装しようとしています。この方法を使用しようとしましたが.append
失敗しました。
編集:
以下のコードを追加に使用してみました。しかし、それは何もしていないようです。または、おそらく私は何か間違ったことをしています:
function add(data) {
if (data.Success == true) {
var rowTemplate = $("#rowTemplate").html();
var tbl = document.getElementById("ProductsTable");
var counter = $("#ProductsTable tr").length;
data.Counter = counter;
$("#ProductsTable").append(applyTemplate(rowTemplate, data));
}
else {
$("#update-message").html(data.ErrorMessage);
$("#update-message").show();
}
}
function applyTemplate(template, data) {
var str = template;
if ($.isPlainObject(data)) {
$.each(data, function (index, value) {
var find = new RegExp("\\$1" + index, "ig");
str = str.replace(/\$/g, "\$1");
str = str.replace(find, value);
});
}
return str;
}
次のような行テンプレートを使用します。
<script type="text/x-template" id="rowTemplate">
<tr><td><input type="text" id="txtName_$Counter" value="" /></td></tr>
</script>
このソリューションをオンラインで見つけましたが、機能させることができません。私は以下のコードも試しました(私は私が持っている編集jqueryに基づいて作成しました):
function add(data) {
if (data.Success == true) {
var parent = linkObj.closest("tr");
parent.find(".ProductID").append(data.Object.ProductID);
parent.find(".ProductName").append(data.Object.ProductName);
parent.find(".Price").append(data.Object.Price);
}
else {
$("#update-message").html(data.ErrorMessage);
$("#update-message").show();
}
}
編集:
今のところ、これは私のjQueryがどのように見えるかです:
function add(data) {
if (data.Success == true) {
data = { Counter: 3 };
$("#rowTemplate").tmpl(data).appendTo("#ProductsTable");
$('#updateDialog').dialog('close');
}
else {
$("#update-message").html(data.ErrorMessage);
$("#update-message").show();
}
}
これが私のテンプレートです:
<script type="text/x-template" id="rowTemplate">
<tr>
<td><span class="ProductID"></span></td>
<td><span class="ProductName"></span></td>
<td><span class="Price"></span></td>
<td>@Html.ActionLink("Edit", "_EditProduct", new { @class = "editLink" })</td>
<td>@Html.ActionLink("Delete", "_DeleteProduct", new { @class = "editLink" })</td>
</tr>
</script>
jQueryを機能させて行を追加するのを手伝ってくれたSir@MuhammadAdeelZahidに感謝します。ただし、テーブルに新しい行を追加するだけです。今必要なのは、jQueryのdata
オブジェクトから取得した値を追加することです。add function
このリンクのチュートリアルに従ってみましたが、うまくいかないようです。私のコードは以下の通りです:
function add(data) {
if (data.Success == true) {
var prod = $.map(data.results, function (obj, index) {
return {
ProductID: obj.text,
ProductName: obj.text,
Price: obj.text
};
});
prod = { Counter: 3 };
$("#rowTemplate").tmpl(prod).appendTo("#ProductsTable");
$('#updateDialog').dialog('close');
}
else {
$("#update-message").html(data.ErrorMessage);
$("#update-message").show();
}
}
助けてくれてありがとう!