0

KendoGridsを使用してMVC、エンティティアプリケーションを構築しています。

私はこのkendoGridを構築しました

    @(Html.Kendo().Grid<ModelApp.Models.Tickets>()
.Name("ticketgrid")
.Columns(columns =>
    {

        columns.Bound(p => p.TicketID).Title("ID");
        columns.ForeignKey(p => p.CustomerID, (System.Collections.IEnumerable)ViewData["customers"], "CustomerID", "CustomerName").Title("Customer");
        columns.ForeignKey(p => p.AreaOfBusinessID, (System.Collections.IEnumerable)ViewData["areaofbusinesses"], "AreaOfBusinessID", "AreaOfBusiness1").Title("AreaOfBusiness");
         columns.Bound(p => p.OccurredOn).Title("Occured").Format("{0:yyyy-MM-dd}");
        columns.ForeignKey(p => p.SeverityID, (System.Collections.IEnumerable)ViewData["severities"], "SeverityID", "Severity1").Title("Severity");
        columns.ForeignKey(p => p.AssigneeID, (System.Collections.IEnumerable)ViewData["assignees"], "AssigneeID", "AssigneeName").Title("Assignee");
        columns.ForeignKey(p => p.TicketStatusID, (System.Collections.IEnumerable)ViewData["ticketstatuses"], "TicketStatusID", "TicketStatus1").Title("Status");
        columns.Bound(p => p.UserID).Title("User");
        columns.Bound(p => p.DateRegistered).Title("Registered").Format("{0:yyyy-MM-dd}");
})
.DataSource(dataSource => 
    dataSource
.Ajax()
.Model(model => model.Id(p => p.TicketID))
.Read(read => read.Action("Index","Ticket"))
.Create(create => create.Action("Create", "Ticket"))
.Update(update => update.Action("Edit", "Ticket"))
//.Destroy(destroy => destroy.Action("Delete", "Ticket"))        
    )
    .Pageable()
    .Editable(editing => editing.Mode(GridEditMode.InCell))
    .ToolBar(toolbar =>
    {
        toolbar.Create();
        toolbar.Save();
    })
    .Navigatable()
    .Selectable()

    )

そして私は2つの問題に直面しています

1)TicketID列はID列です。[作成]ボタンを選択すると、ゼロがフェッチされます。Gidに、この列を混乱させてはならず、データベースがそれを処理することを理解させるにはどうすればよいですか?もちろん、とにかく挿入は行われていません。それは私を2番目の質問に連れて行きます

2)編集はデータベースに投稿されません

[AcceptVerbs(HttpVerbs.Post)]
    public ActionResult Edit([DataSourceRequest] DataSourceRequest request, IEnumerable<ModelApp.Models.Tickets> models)
    {
        if (models != null)
        {
            try
            {
                foreach (var updatedEntity in models)
                {
                    var itemToUpdate = db.Tickets.Where(p => p.TicketID == updatedEntity.TicketID).FirstOrDefault();
                    if (itemToUpdate != null)
                    {
                        itemToUpdate.CustomerID = updatedEntity.CustomerID;
                        itemToUpdate.AreaOfBusinessID = updatedEntity.AreaOfBusinessID;
                        itemToUpdate.AssigneeID = updatedEntity.AssigneeID;
                        itemToUpdate.OccurredOn = updatedEntity.OccurredOn;
                        itemToUpdate.SeverityID = updatedEntity.SeverityID;
                        itemToUpdate.DateRegistered = updatedEntity.DateRegistered;
                        itemToUpdate.UserID = updatedEntity.UserID;
                        db.SaveChanges();
                        ModelState.Clear();
                    }
                }
            }
            catch (Exception e)
            {
                db.add_exception_log(e.Message, "UPDATE RATES");

            }
        }
        return Json(ModelState.ToDataSourceResult());
    }

モデルがnullであるため。なぜ手がかりはありますか?

よろしくお願いします

4

1 に答える 1

1

1)dataSourceのモデルコンフィギュレータ内でフィールドを編集不可にする必要があります

model=>{
    model.Fiedl(p=>p.TicketID).Editable(false);
}

2)コレクションを期待するためにバッチ編集を使用していません-単一のレコードを期待するように署名を変更します

public ActionResult Edit([DataSourceRequest] DataSourceRequest request, ModelApp.Models.Tickets model)
于 2013-01-10T16:09:37.517 に答える