グリッドにデータCRUDインラインを作成します。 Createメソッドは正常に終了しました。しかし、私が更新しようとすると、常に新しいデータが作成されます。私はデバッグしようとするとき。常にcreateメソッドに移動します。誰か助けてください。私はKendoUI、MVC4をC#で使用しています。高度な剣道グリッドのデータを更新できませんでした。常にデータを作成してください。
モデルのおかげで
using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
using System.Web;
namespace admission.Models
{
public class JenisUjianModel
{
public JenisUjianModel() { }
public int id_jenis_ujian { set; get; }
public string jenis_ujian { set; get; }
public DateTime tgl_ujian { set; get; }
public string created { set; get; }
public string createdBy { set; get; }
public string modified { set; get; }
public string modifiedBy { set; get; }
public string flag { set; get; }
}
public class UjianJenisModel
{
pmbEntities entities = new pmbEntities();
public IEnumerable<JenisUjianModel> Read()
{
return entities.Tbl_Jenis_Ujian.Select(jnis => new JenisUjianModel
{
id_jenis_ujian = jnis.id_jenis_ujian,
jenis_ujian = jnis.jenis_ujian,
tgl_ujian = jnis.Tgl_Ujian.Value
}).OrderBy(u => u.id_jenis_ujian);
}
public void Create(JenisUjianModel jnis)
{
var entity = new Tbl_Jenis_Ujian();
int last = entities.Tbl_Jenis_Ujian.Max(u => u.id_jenis_ujian);
int coun = entities.Tbl_Jenis_Ujian.Count();
if (coun == 0)
{
entity.id_jenis_ujian = 0;
}
else
entity.id_jenis_ujian = last + 1;
entity.jenis_ujian = jnis.jenis_ujian;
entity.Tgl_Ujian = jnis.tgl_ujian;
entity.created = DateTime.Now;
entity.flag = "Y";
entities.Tbl_Jenis_Ujian.Add(entity);
entities.SaveChanges();
}
public void Update(JenisUjianModel jnis)
{
var entity = new Tbl_Jenis_Ujian();
entity.id_jenis_ujian = jnis.id_jenis_ujian;
entity.jenis_ujian = jnis.jenis_ujian;
entity.Tgl_Ujian = jnis.tgl_ujian;
entity.modified = DateTime.Now;
entity.modifiedBy = jnis.modifiedBy;
entity.created = DateTime.Parse(jnis.created);
entity.createdBy = jnis.createdBy;
entity.flag = jnis.flag;
entities.Tbl_Jenis_Ujian.Attach(entity);
entities.Entry(entity).State = EntityState.Modified;
entities.SaveChanges();
}
public void Destroy(JenisUjianModel jnis)
{
var entity = new Tbl_Jenis_Ujian();
entity.id_jenis_ujian = jnis.id_jenis_ujian;
entity.jenis_ujian = jnis.jenis_ujian;
entity.Tgl_Ujian = jnis.tgl_ujian;
entity.modified = DateTime.Parse(jnis.modified);
entity.modifiedBy = jnis.modifiedBy;
entity.created = DateTime.Parse(jnis.created);
entity.createdBy = jnis.createdBy;
entity.flag = "N";
entities.Tbl_Jenis_Ujian.Attach(entity);
entities.Entry(entity).State = EntityState.Modified;
entities.SaveChanges();
}
}
}
コントローラ
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using admission.Models;
using Kendo.Mvc.Extensions;
using Kendo.Mvc.UI;
using System.Data.Entity;
namespace admission.Controllers
{
public class UjianController : Controller
{
//
// GET: /Ujian/
UjianJenisModel uj = new UjianJenisModel();
public ActionResult Index()
{
return View();
}
public ActionResult JenisUjian() { return View(); }
public ActionResult jenisUjian_read([DataSourceRequest] DataSourceRequest request)
{
return Json(uj.Read().ToDataSourceResult(request));
}
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult jenisUjian_Create([DataSourceRequest] DataSourceRequest request, JenisUjianModel jnis)
{
if (ModelState.IsValid)
{
uj.Create(jnis);
}
return Json(new[] { jnis }.ToDataSourceResult(request, ModelState));
}
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult jenisUjian_Update([DataSourceRequest] DataSourceRequest request, JenisUjianModel jnis)
{
if (ModelState.IsValid)
{
uj.Update(jnis);
}
return Json(new[] { jnis }.ToDataSourceResult(request, ModelState));
}
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult jenisUjian_Delete([DataSourceRequest] DataSourceRequest request, JenisUjianModel jnis)
{
if (jnis != null)
{
uj.Destroy(jnis);
}
return Json(new[] { jnis }.ToDataSourceResult(request, ModelState));
}
}
}
ビュー
@using Kendo.Mvc.Extensions
@{
ViewBag.Title = "JenisUjian";
Layout = "~/Views/Shared/_adminLayout.cshtml";
}
<div class="tables">
<div class="table-responsive bs-example widget-shadow">
<h4>Data Propinsi:</h4>
@(Html.Kendo().Grid<admission.Models.JenisUjianModel>()
.Name("gridss")
.Columns(columns =>
{
columns.Bound(p => p.id_jenis_ujian).Hidden();
columns.Bound(p => p.jenis_ujian).Title("Jenis Ujian");
columns.Bound(p => p.tgl_ujian).Title("Tgl Ujian").Format("{0: dd MMM yyyy - HH:mm WIB}");
columns.Command(command => { command.Edit(); command.Destroy(); }).Width(250);
})
.ToolBar(toolbar => toolbar.Create())
.Editable(editable => editable.Mode(GridEditMode.InLine))
.Pageable()
.Sortable()
.Filterable()
.HtmlAttributes(new { style = "height:570px;" })
.DataSource(dataSource => dataSource
.Ajax()
.PageSize(10)
.Events(events =>
{
events.Error("error_handler");
events.RequestEnd("force_update");
})
.Model(model => model.Id(p => p.id_jenis_ujian))
.Create(update1 => update1.Action("jenisUjian_Create", "Ujian"))
.Update(update2=> update2.Action("jenisUjian_Update", "Ujian"))
.Read(read => read.Action("jenisUjian_read", "Ujian"))
.Destroy(update3 => update3.Action("jenisUjian_Delete", "Ujian"))
)
)
</div>
</div>
<script type="text/javascript">
function error_handler(e) {
if (e.errors) {
var message = "Errors:\n";
$.each(e.errors, function (key, value) {
if ('errors' in value) {
$.each(value.errors, function() {
message += this + "\n";
});
}
});
alert(message);
}
}
</script>
<script type="text/javascript">
function force_update(e) {
if (e.type === "create") {
location.reload();
}
}
</script>
が機能しませんでした。それでも新しいデータが作成されます。更新に失敗しました –
私は前に気付きませんでしたが、 'update'イベント' events.RequestEnd( "force_update");を無効にしようとしました。これはデータソースに干渉している可能性があります。 –