Telerik mvc grid и пользовательские команды - PullRequest
2 голосов
/ 26 июля 2011

Используя Telerik MVC Grid с AJAX, дайте мне несколько головных болей.Я пытаюсь вставить столбец с несколькими простыми ссылками, чтобы выполнить те же действия, что и команда удаления (потому что я просто не хочу столбец команды по умолчанию).Но я неудачник.Команда удаления по умолчанию прекрасно работает: удалите запись и обновите сетку.Моя пользовательская ссылка, только удаляю запись, но сетка не обновляется.

Вот мой код.Возможно, я упускаю простую вещь.

Вид:

@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;
});

1 Ответ

2 голосов
/ 26 июля 2011

вы должны получить объект сетки и вызвать перепривязку в обратном вызове ajax, как

$("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") "Сетка" - это название элемента управления сеткой на странице. остальное - синтаксис

...