jquery DataTablesプラグインを使用してdbテーブルの詳細を表示し、Jeditableを使用して各セルをインラインで編集できるようにします。編集したデータは、ポストバックしてデータベースに保存する必要があります。私はここに私のシナリオに非常に似ている例を見つけた:http://naspinski.net/post/Inline-AJAX-DropDown-and-Text-Editing-with-AspNet-MVC-and-jQuery.aspxと私はガイドとしてそれを実装しようとしました。asp.net mvc + jEditable - 編集したセルデータをデータベースに保存する
しかし、私はここにいくつかの問題に直面する:
とどのように私はUrl.Content()と何が渡され、返されるべきで使うべき?
[MissingMethodException]:このオブジェクトに対して定義されたパラメータのないコンストラクタはありません。
私はここで非常に間違ったことを知っていましたが、私は疑いを明確にすることができませんでした。ここ は、私は私のセルを編集可能にするために使用されるスクリプトは次のとおりです。
$(function() {
// Initialize a data table
var myTable = $('#example').dataTable({
// To use themeroller theme
"bJQueryUI": true
});
// Make every cell editable
$('td', myTable.fnGetNodes()).editable('@(Url.Action("Edit", "Home"))',
{
indicator: 'saving...',
tooltip: 'click to edit...',
style: 'inherit',
placeholder: 'click to edit'
});
});
と私はDBに編集したデータを保存するために使用されるコントローラのアクション:
[HttpPost]
public void Edit(HttpContext context)
{
string elementId = context.Request.Form["id"];
string fieldToEdit = elementId.Substring(0, 4);
//now take anything after those 4 and it is the Id:
int idToEdit = Convert.ToInt32(elementId.Remove(0, 4));
// the value is simply a string:
string newValue = context.Request.Form["value"].Trim();
var food = dbEntities.Foods.Single(i => i.FoodID == idToEdit);
switch (fieldToEdit)
{
case "name": food.FoodName = newValue; break;
case "amnt": food.FoodAmount = Convert.ToInt32(newValue); break;
case "sdat": food.StorageDate = Convert.ToDateTime(newValue); break;
case "edat": food.ExpiryDate = Convert.ToDateTime(newValue); break;
case "type": food.FoodTypeID = Convert.ToInt32(newValue); break;
case "cont": food.ContainerID = Convert.ToInt32(newValue); break;
default: throw new Exception("invalid fieldToEdit passed");
}
dbEntities.SaveChanges();
context.Response.Write(newValue);
}
は本当に感謝...ここにいくつかの助けが必要それ...