kendogrid刷新后添加CSS元素

Add CSS element after kendogrid refresh

我有一个 ajax 调用发送到 MyController 中的 MyAction.. 它 returns 我有成功的结果和我想附加一些元素的 Id CSS.

Id 被返回,css 被添加,但是 refreshGridData 发生在删除我刚刚添加到元素的 css 之后。

有没有办法等待 refreshGridData 完成,然后添加 css?

我确实尝试了 ajax.. 它没有用。

    $.ajax({
        url: "@Url.Action("MyAction", "MyController")",
        type: "POST",
        data: postData,
        success: function (result) {
            if (result.Success) {
                alert("success");
                refreshGridData();
            }
        },
        error: function (result) {
            alert("Error!");
        }
        AddMyCSSToThis(result.Id);
       // done: AddMyCSSToThis(result.Id);
    }); 

    function refreshGridData() {
        var ajaxContainer = $(".grid-wrap");
        kendo.ui.progress(ajaxContainer, true);
        refreshGrid();
        kendo.ui.progress(ajaxContainer, false);
    }

您可以创建一个全局变量并在网格 dataBound 事件中使用它来添加 CSS。

_addCssToResultId = null;
$.ajax({
    url: "@Url.Action("MyAction", "MyController")",
    type: "POST",
    data: postData,
    success: function (result) {
        if (result.Success) {
            alert("success");
            _addCssToResultId = result.Id;
            refreshGridData();
        }
    },
    error: function (result) {
        alert("Error!");
    }
});

// add a dataBound handler to your grid
$("#grid").kendoGrid({
  dataBound: function(e) {
    if(_addCssToResultId) {
       AddMyCSSToThis(_addCssToResultId);
       _addCssToResultId = null;
    }
  }
});

为什么不传入要将更改添加到 refreshGridData() 函数中的 ID,例如:

 $.ajax({
    url: "@Url.Action("MyAction", "MyController")",
    type: "POST",
    data: postData,
    success: function (result) {
        if (result.Success) {
            alert("success");
            var savedId = result.Id;
            refreshGridData(savedId);
        }
    },
    error: function (result) {
        alert("Error!");
    }
    AddMyCSSToThis(result.Id);
   // done: AddMyCSSToThis(result.Id);
}); 

function refreshGridData(savedId) {
    var ajaxContainer = $(".grid-wrap");
    kendo.ui.progress(ajaxContainer, true);
    refreshGrid(savedId); // I'm assuming this function is what adds the css
    kendo.ui.progress(ajaxContainer, false);
}