KendoGrid-MVC-Entity-Identity列

KendoGrid-MVC-Entity-Identity列,grid,kendo-ui,identity-column,Grid,Kendo Ui,Identity Column,我正在用KendoGrids构建一个MVC实体应用程序 我建造了这个肯多格里德 @(Html.Kendo().Grid<ModelApp.Models.Tickets>() .Name("ticketgrid") .Columns(columns => { columns.Bound(p => p.TicketID).Title("ID"); columns.ForeignKey(p => p.CustomerID,

我正在用KendoGrids构建一个MVC实体应用程序

我建造了这个肯多格里德

    @(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()

    )
@(Html.Kendo().Grid())
.Name(“ticketgrid”)
.列(列=>
{
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.AreaOfBusiness ID,(System.Collections.IEnumerable)ViewData[“AreaOfBusiness”],“AreaOfBusiness ID”,“AreaOfBusiness 1”).Title(“AreaOfBusiness”);
columns.Bound(p=>p.OccurredOn).Title(“Occured”).Format(“{0:yyyy-MM-dd}”);
columns.ForeignKey(p=>p.SeverityID,(System.Collections.IEnumerable)ViewData[“严重性”],“严重性id”,“严重性1”)。Title(“严重性”);
columns.ForeignKey(p=>p.AssigneeID,(System.Collections.IEnumerable)ViewData[“assignees”],“AssigneeID”,“AssigneeName”).Title(“assignees”);
columns.ForeignKey(p=>p.TicketStatusID,(System.Collections.IEnumerable)ViewData[“ticketstatuses”],“TicketStatusID”,“TicketStatus1”).Title(“Status”);
columns.Bound(p=>p.UserID).Title(“用户”);
columns.Bound(p=>p.DateRegistered).Title(“Registered”).Format(“{0:yyyy-MM-dd}”);
})
.DataSource(DataSource=>
数据源
.Ajax()
.Model(Model=>Model.Id(p=>p.TicketID))
.Read(Read=>Read.Action(“索引”、“票据”))
.Create(Create=>Create.Action(“Create”、“Ticket”))
.Update(Update=>Update.Action(“编辑”、“票证”))
//.Destroy(Destroy=>Destroy.Action(“删除”、“票据”))
)
.Pageable()
.Editable(editing=>editing.Mode(GridEditMode.InCell))
.ToolBar(ToolBar=>
{
toolbar.Create();
toolbar.Save();
})
.Navigatable()
.可选()
)
我面临两个问题

1) TicketID列是一个标识列。当我选择Create按钮时,它会获取一个零。我怎样才能让Gid明白它不应该弄乱这个列,数据库会处理它? 当然,没有插入任何内容,这就引出了第二个问题

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());
    }
[AcceptVerbs(HttpVerbs.Post)]
公共操作结果编辑([DataSourceRequest]DataSourceRequest请求,IEnumerable模型)
{
如果(型号!=null)
{
尝试
{
foreach(模型中的var更新性)
{
var itemToUpdate=db.Tickets.Where(p=>p.TicketID==updatedEntity.TicketID).FirstOrDefault();
if(itemToUpdate!=null)
{
itemToUpdate.CustomerID=updatedEntity.CustomerID;
itemToUpdate.AreaOfBusiness ID=UpdateEndity.AreaOfBusiness ID;
itemToUpdate.AssigneeID=UpdateEndity.AssigneeID;
itemToUpdate.OccurredOn=updatedEntity.OccurredOn;
itemToUpdate.SeverityID=updatedEntity.SeverityID;
itemToUpdate.DateRegistered=UpdateEndity.DateRegistered;
itemToUpdate.UserID=updatedEntity.UserID;
db.SaveChanges();
ModelState.Clear();
}
}
}
捕获(例外e)
{
db.添加异常日志(如消息“更新率”);
}
}
返回Json(ModelState.ToDataSourceResult());
}
因为模型是空的。有什么线索吗

Thanx提前

1)您应该在数据源的模型配置程序中使该字段不可编辑

model=>{
    model.Fiedl(p=>p.TicketID).Editable(false);
}
2) 您没有使用批处理编辑来期望收集-将签名者更改为期望单个记录

public ActionResult Edit([DataSourceRequest] DataSourceRequest request, ModelApp.Models.Tickets model)