User interface 网格剑道ui编辑创建删除

User interface 网格剑道ui编辑创建删除,user-interface,grid,kendo-ui,User Interface,Grid,Kendo Ui,我有mvc cshtml页面 它包含一个开始通知: @using (Html.BeginForm("ValiderLeChangement", "FichePersonnel", FormMethod.Post , new { id = "FormValider" } )) { } 在这个表单中,我将剑道网格ui放在了我想要使用的剑道网格中 创建添加和删除,如剑道UI演示()中的示例 我对服务器上的创建、删除或编辑不触发的操作有问题 我的代码是: @(Html.Kendo().Grid(Mo

我有mvc cshtml页面

它包含一个开始通知:

@using (Html.BeginForm("ValiderLeChangement", "FichePersonnel", FormMethod.Post , new { id = "FormValider" }  ))
{
}
在这个表单中,我将剑道网格ui放在了我想要使用的剑道网格中

创建添加和删除,如剑道UI演示()中的示例

我对服务器上的创建、删除或编辑不触发的操作有问题

我的代码是:

@(Html.Kendo().Grid(Model.ListeContact)
    .Name("Grid")
    .Editable(editable => editable.Mode(GridEditMode.InLine))
    .ToolBar(toolbar => toolbar.Create())
    .Columns(columns =>
    {
        columns.Bound(p => p.Nom).Title("Nom").Width(20);
        columns.Bound(p => p.Prenom).Title("Prenom").Width(20);

        //columns.Bound(p => p.Lien.Libelle).Title("Lien").Width(20).ClientTemplate(????? );
        columns.Bound(p => p.Lien.Libelle).Title("Lien").Width(20);

        columns.Bound(p => p.Tel).Title("Telephone").Width(20);

        columns.Command(command => { command.Edit(); }).Width(30);
        columns.Command(command => { command.Destroy(); }).Width(30);
      /////////  columns.Bound(p => p.IdContact).ClientTemplate("#= Delete(data) #").Title("Supprimer").Width(5);
    })
    .Sortable()
    .DataSource(dataSource => dataSource
    .Ajax()
    .Batch(true)
    .ServerOperation(true)
    .Events(events => events.Error("error_handler"))
    .Read(Read => Read.Action("ListeContact_Read", "FichePersonnel"))
        .Model(model => model.Id(p => p.IdContact))
        .Create(create => create.Action("EditingInline_Create", "FichePersonnel"))
        .Update(update => update.Action("EditingInline_Update", "FichePersonnel"))
        .Destroy(delete => delete.Action("EditingInline_Destroy", "FichePersonnel"))

    )
)

您是如何实现控制器操作方法的?它是否正确处理请求并返回?应该是这样的:

public ActionResult EditingInline_Create([DataSourceRequest] DataSourceRequest request, ProductViewModel product)
    {
        if (product != null && ModelState.IsValid)
        {         
            SessionProductRepository.Insert(product);                                 
        }

        return Json(new [] { product }.ToDataSourceResult(request, ModelState));
    }
    public partial class TextosController : EditorImageBrowserController
{
    public ActionResult ReadTextos([DataSourceRequest]DataSourceRequest request)
    {
        CostSimulatorModel modelo = new CostSimulatorModel(new Uri(@"http://localhost:53212/CostSimulatorModelService.svc/"));

        IQueryable<Texto> textos = modelo.Textos;
        DataSourceResult resultado = textos.ToDataSourceResult(request);
        ViewData["Textos"] = textos;
        return Json(resultado, JsonRequestBehavior.AllowGet);
    }
    public ActionResult CreateTexto([DataSourceRequest]DataSourceRequest request, Texto texto)
    {
        if (ModelState.IsValid)
        {
            CostSimulatorModel modelo = new CostSimulatorModel(new Uri(@"http://localhost:53212/CostSimulatorModelService.svc/"));

            // Create a new Product entity and set its properties from the posted ProductViewModel
            Texto entity = new Texto
            {
                TextoID = texto.TextoID,
                Titulo = texto.Titulo,
                Corpo = texto.Corpo,
                IsPrivado = texto.IsPrivado,
                TipoTextoID = texto.TiposTexto != null ? texto.TiposTexto.TipoTextoID : texto.TipoTextoID,
                TiposTexto = texto.TiposTexto
            };
            modelo.AddToTextos(entity);
            // Insert the entity in the database
            modelo.SaveChanges();
            // Get the ProductID generated by the database
            texto.TextoID = entity.TextoID;
            return Json(new[] { entity }.ToDataSourceResult(request, ModelState));
        }
        // Return the inserted product. The grid needs the generated ProductID. Also return any validation errors.
        return Json(new[] { texto }.ToDataSourceResult(request, ModelState));
    }

    public ActionResult UpdateTexto([DataSourceRequest]DataSourceRequest request, Texto texto)
    {
        if (ModelState.IsValid)
        {
            CostSimulatorModel modelo = new CostSimulatorModel(new Uri(@"http://localhost:53212/CostSimulatorModelService.svc/"));

            // Create a new Product entity and set its properties from the posted ProductViewModel
            var entity = new Texto
            {
                TextoID = texto.TextoID,
                Titulo = texto.Titulo,
                Corpo = texto.Corpo,
                IsPrivado = texto.IsPrivado,
                TipoTextoID = texto.TiposTexto != null ? texto.TiposTexto.TipoTextoID : texto.TipoTextoID,
                TiposTexto = texto.TiposTexto
            };
            // Attach the entity
            modelo.AttachTo("Textos", entity);
            modelo.UpdateObject(entity);
            // Update the entity in the database
            modelo.SaveChanges();
            return Json(new[] { entity }.ToDataSourceResult(request, ModelState));
        }
        // Return the updated product. Also return any validation errors.
        return Json(new[] { texto }.ToDataSourceResult(request, ModelState));
    }

    public ActionResult DestroyTexto([DataSourceRequest]DataSourceRequest request, Texto texto)
    {
        if (ModelState.IsValid)
        {
            CostSimulatorModel modelo = new CostSimulatorModel(new Uri(@"http://localhost:53212/CostSimulatorModelService.svc/"));

            // Create a new Product entity and set its properties from the posted ProductViewModel
            var entity = new Texto
            {
                TextoID = texto.TextoID
            };
            // Attach the entity
            modelo.AttachTo("Textos", entity);
            // Delete the entity
            modelo.DeleteObject(entity);

            // Delete the entity in the database
            modelo.SaveChanges();
            return Json(new[] { entity }.ToDataSourceResult(request, ModelState));
        }
        // Return the removed product. Also return any validation errors.
        return Json(new[] { texto }.ToDataSourceResult(request, ModelState));
    }
}
注意第一个参数DataSourceRequest和返回类型Json。也许这就是你错过的。我还注意到您指示的是ServerOperation(true)。据我所知,如果您像现在这样使用AJAX绑定,就不应该需要它

编辑: 对于控制器代码,如下所示:

public ActionResult EditingInline_Create([DataSourceRequest] DataSourceRequest request, ProductViewModel product)
    {
        if (product != null && ModelState.IsValid)
        {         
            SessionProductRepository.Insert(product);                                 
        }

        return Json(new [] { product }.ToDataSourceResult(request, ModelState));
    }
    public partial class TextosController : EditorImageBrowserController
{
    public ActionResult ReadTextos([DataSourceRequest]DataSourceRequest request)
    {
        CostSimulatorModel modelo = new CostSimulatorModel(new Uri(@"http://localhost:53212/CostSimulatorModelService.svc/"));

        IQueryable<Texto> textos = modelo.Textos;
        DataSourceResult resultado = textos.ToDataSourceResult(request);
        ViewData["Textos"] = textos;
        return Json(resultado, JsonRequestBehavior.AllowGet);
    }
    public ActionResult CreateTexto([DataSourceRequest]DataSourceRequest request, Texto texto)
    {
        if (ModelState.IsValid)
        {
            CostSimulatorModel modelo = new CostSimulatorModel(new Uri(@"http://localhost:53212/CostSimulatorModelService.svc/"));

            // Create a new Product entity and set its properties from the posted ProductViewModel
            Texto entity = new Texto
            {
                TextoID = texto.TextoID,
                Titulo = texto.Titulo,
                Corpo = texto.Corpo,
                IsPrivado = texto.IsPrivado,
                TipoTextoID = texto.TiposTexto != null ? texto.TiposTexto.TipoTextoID : texto.TipoTextoID,
                TiposTexto = texto.TiposTexto
            };
            modelo.AddToTextos(entity);
            // Insert the entity in the database
            modelo.SaveChanges();
            // Get the ProductID generated by the database
            texto.TextoID = entity.TextoID;
            return Json(new[] { entity }.ToDataSourceResult(request, ModelState));
        }
        // Return the inserted product. The grid needs the generated ProductID. Also return any validation errors.
        return Json(new[] { texto }.ToDataSourceResult(request, ModelState));
    }

    public ActionResult UpdateTexto([DataSourceRequest]DataSourceRequest request, Texto texto)
    {
        if (ModelState.IsValid)
        {
            CostSimulatorModel modelo = new CostSimulatorModel(new Uri(@"http://localhost:53212/CostSimulatorModelService.svc/"));

            // Create a new Product entity and set its properties from the posted ProductViewModel
            var entity = new Texto
            {
                TextoID = texto.TextoID,
                Titulo = texto.Titulo,
                Corpo = texto.Corpo,
                IsPrivado = texto.IsPrivado,
                TipoTextoID = texto.TiposTexto != null ? texto.TiposTexto.TipoTextoID : texto.TipoTextoID,
                TiposTexto = texto.TiposTexto
            };
            // Attach the entity
            modelo.AttachTo("Textos", entity);
            modelo.UpdateObject(entity);
            // Update the entity in the database
            modelo.SaveChanges();
            return Json(new[] { entity }.ToDataSourceResult(request, ModelState));
        }
        // Return the updated product. Also return any validation errors.
        return Json(new[] { texto }.ToDataSourceResult(request, ModelState));
    }

    public ActionResult DestroyTexto([DataSourceRequest]DataSourceRequest request, Texto texto)
    {
        if (ModelState.IsValid)
        {
            CostSimulatorModel modelo = new CostSimulatorModel(new Uri(@"http://localhost:53212/CostSimulatorModelService.svc/"));

            // Create a new Product entity and set its properties from the posted ProductViewModel
            var entity = new Texto
            {
                TextoID = texto.TextoID
            };
            // Attach the entity
            modelo.AttachTo("Textos", entity);
            // Delete the entity
            modelo.DeleteObject(entity);

            // Delete the entity in the database
            modelo.SaveChanges();
            return Json(new[] { entity }.ToDataSourceResult(request, ModelState));
        }
        // Return the removed product. Also return any validation errors.
        return Json(new[] { texto }.ToDataSourceResult(request, ModelState));
    }
}
public部分类TextosController:EditorImageBrowserController
{
public ActionResult ReadTextos([DataSourceRequest]DataSourceRequest请求)
{
CostSimulatorModelo=新的CostSimulatorModel(新Uri)(@)http://localhost:53212/CostSimulatorModelService.svc/"));
IQueryable textos=modelo.textos;
DataSourceResult resultado=textos.ToDataSourceResult(请求);
ViewData[“Textos”]=Textos;
返回Json(resultado,JsonRequestBehavior.AllowGet);
}
公共操作结果CreateTexto([DataSourceRequest]DataSourceRequest请求,Texto Texto)
{
if(ModelState.IsValid)
{
CostSimulatorModelo=新的CostSimulatorModel(新Uri)(@)http://localhost:53212/CostSimulatorModelService.svc/"));
//创建新的产品实体,并从发布的ProductViewModel设置其属性
Texto实体=新Texto
{
TextoID=texto.TextoID,
Titulo=texto.Titulo,
Corpo=texto.Corpo,
IsPrivado=texto.IsPrivado,
TipoTextoID=texto.tipostextoId!=null?texto.tipostextoId.TipoTextoID:texto.TipoTextoID,
TiposTexto=texto.TiposTexto
};
modelo.AddToTextos(实体);
//在数据库中插入实体
modelo.SaveChanges();
//获取数据库生成的ProductID
texto.TextoID=entity.TextoID;
返回Json(new[]{entity}.ToDataSourceResult(request,ModelState));
}
//返回插入的产品。网格需要生成的ProductID。还返回任何验证错误。
返回Json(new[]{texto}.ToDataSourceResult(request,ModelState));
}
public ActionResult UpdateTexto([DataSourceRequest]DataSourceRequest请求,Texto Texto)
{
if(ModelState.IsValid)
{
CostSimulatorModelo=新的CostSimulatorModel(新Uri)(@)http://localhost:53212/CostSimulatorModelService.svc/"));
//创建新的产品实体,并从发布的ProductViewModel设置其属性
var实体=新文本
{
TextoID=texto.TextoID,
Titulo=texto.Titulo,
Corpo=texto.Corpo,
IsPrivado=texto.IsPrivado,
TipoTextoID=texto.tipostextoId!=null?texto.tipostextoId.TipoTextoID:texto.TipoTextoID,
TiposTexto=texto.TiposTexto
};
//附加实体
modelo.AttachTo(“Textos”,实体);
模型更新对象(实体);
//更新数据库中的实体
modelo.SaveChanges();
返回Json(new[]{entity}.ToDataSourceResult(request,ModelState));
}
//返回更新的产品。同时返回所有验证错误。
返回Json(new[]{texto}.ToDataSourceResult(request,ModelState));
}
公共操作结果DestroyTexto([DataSourceRequest]DataSourceRequest请求,Texto Texto)
{
if(ModelState.IsValid)
{
CostSimulatorModelo=新的CostSimulatorModel(新Uri)(@)http://localhost:53212/CostSimulatorModelService.svc/"));
//创建新的产品实体,并从发布的ProductViewModel设置其属性
var实体=新文本
{
TextoID=texto.TextoID
};
//附加实体
modelo.AttachTo(“Textos”,实体);
//删除实体
modelo.DeleteObject(实体);
//删除数据库中的实体
modelo.SaveChanges();
返回Json(new[]{entity}.ToDataSourceResult(request,ModelState));
}
//返回删除的产品。同时返回所有验证错误。
返回Json(new[]{texto}.ToDataSourceResult(request,ModelState));
}
}

谢谢,我已经编写了与eSample和methodnow相同的代码,但在创建或更新我的网格后我遇到了问题剑道不要刷新如果我尝试创建或更新我有错误,如要更新的对象Id为nulSo如果我刷新(F5)一切正常==>如何强制从控制器刷新页面i’我还没有完成我的操作创建更新是ajax Thank Show您是否在控制器上执行了操作?你能给我看一下代码吗?