【问题标题】:Telerik mvc grid and custom commandsTelerik mvc 网格和自定义命令
【发布时间】:2011-10-12 22:28:56
【问题描述】:

将 Telerik mvc 网格与 ajax 一起使用,让我有些头疼。 我正在尝试插入一个带有一些简单链接的列,以执行与 Delete 命令相同的行为(因为我只是不想要默认的命令列)。 但我失败了。 默认的删除命令效果很好:删除记录并刷新网格。 我的自定义链接,只删除了记录,但网格没有刷新。

这是我的代码。也许我错过了一件简单的事情。

查看:

@model  Benner.Saude.Mapeamento.Especialidade[]


@(Html.Telerik().Grid(Model)
    .Name("Grid")
    .DataKeys(keys => keys.Add(c => c.Handle))         
    .DataBinding(dataBinding => dataBinding
        .Ajax()
        .OperationMode(GridOperationMode.Client)
        .Select("AjaxPesquisar", "Especialidade")
        .Update("AjaxAtualizar", "Especialidade")
        .Delete("Delete", "Especialidade"))
    .HtmlAttributes(new { @class = "grid-padrao" })
    .ClientEvents(events => events
        .OnDataBound("atualizarCss")
    )
    .Columns(columns =>
    {
        .ClientTemplate("<text><a href='/Especialidade/Delete/33' class='formatacao delete-link' image='delete'/></text>")
        .Width(20).Title("Commands");  ***this does not works ***


        columns.Bound("Descricao").Title("Descrição");
        columns.Bound("Handle").Title("Código");
        columns.Command(commands =>
        {
            commands.Delete().ButtonType(GridButtonType.BareImage); ***this works***

        }).Width(70);

    })        
    .Pageable()
    .Sortable()

    )

控制器:

    [AcceptVerbs(HttpVerbs.Post | HttpVerbs.Get)]
    [GridAction]
    public ActionResult Delete(int id)
    {
        cadastro.ExcluirEspecialidade(Session["token"].ToString(), id);
        Especialidade[] especialidades = consulta.PesquisarEspecialidades(Session["token"].ToString());
        return View(new GridModel(especialidades));
    }

Javascript:

$("a.delete-link").click(function (event) {
    var link = $(this)[0];

    if (confirm("Confirm delete?")) {
        $.post(link.href);
    }

    return false;
});

【问题讨论】:

    标签: ajax model-view-controller grid telerik


    【解决方案1】:

    您必须获取网格对象并在 ajax 回调中调用 rebind,例如

    $("a.delete-link").click(function (event) {
        var link = $(this)[0];
    
        if (confirm("Confirm delete?")) {
            $.post(link.href, function(data)
              {
                 var $grid = $("#Grid").data("tGrid");
                 $grid.rebind();
              });
        }
    
        return false;
    });
    

    $("#Grid") 中,“Grid”是页面上您的网格控件的名称。剩下的就是语法

    【讨论】:

    猜你喜欢
    • 2017-10-30
    • 2012-06-25
    • 1970-01-01
    • 1970-01-01
    • 2012-07-10
    • 1970-01-01
    • 2011-10-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多