代码之家  ›  专栏  ›  技术社区  ›  NoviceDeveloper

在kendogrid刷新后添加CSS元素

  •  2
  • NoviceDeveloper  · 技术社区  · 6 年前

    我有一个ajax调用,它在MyController中发送给MyAction。。它返回给我一个成功的结果和一个我想要附加一些CSS的元素的Id。

    返回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);
        }
    
    2 回复  |  直到 6 年前
        1
  •  1
  •   Keith    6 年前

    为什么不传入要将更改添加到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);
    }
    
        2
  •  0
  •   Martin D.    6 年前

    您可以创建一个全局变量,并在网格数据绑定事件中使用它来添加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;
        }
      }
    });