Kendo UI Grid,计算列

时间:2014-05-06 14:10:33

标签: kendo-ui

我正在尝试使用计算列制作网格。 我的问题是,当我更改网格时,不会重新计算列。

页面(asp.net MVC):

@(Html.Kendo().Grid<VistaFlowDTO>()
                  .Name("Grid")
                  .Columns(columns =>
                  {
                  columns.Bound(o => o.Country).ClientTemplate("#=model.renderCodeList(Country)#");
                  columns.Bound(o => o.Plant).ClientTemplate("#=model.renderCodeList(Plant)#");
                  columns.Bound(o => o.Flow).Sortable(false).Filterable(false).ClientTemplate("#=model.renderFlow(Flow)#");
                  columns.Bound(o => o.State);
                  columns.Bound(o => o.ConditionStatus).ClientTemplate("#=model.renderCodeList(ConditionStatus)#");
                  columns.Bound(o => o.DateOfUpdate);
                  })
          .Model(model =>
                    {
                        model.Id(p => p.Id);
                        model.Field(p => p.Flow).DefaultValue((LeftRightDTO)ViewData["Value"]).Editable(false);
                    })
              .Events(e=> e.Save("model.changeGrid"))

的javascript: //模板

function renderFlow(data) {
            var left = $(data).prop('Left');
            var right = $(data).prop('Right');
            return renderLeftRight(left, right, '_');
        }
function renderLeftRight(left, right, separator) {
            if (!left && !right)
                return '';
            return "<div class='leftAndRight'><span class='left'>" + left + "</span>" + separator + "<span class='right'>" + right + "</span></div>";
        }

//在网格更改时调用

function changeGrid(e) {
       if (e.values.Country || e.values.Plant) {
            var c = e.values.Country || e.model.Country;
            var p = e.values.Plant || e.model.Plant;
            e.model.set("Flow.Left", c);
            e.model.set("Flow.Right", p);
        }
    }

Flow(c#class):

public class LeftRightDTO
{
    public string Left { get; set; }
    public string Right { get; set; }

    public LeftRightDTO()
    {
    }

    public LeftRightDTO(string left, string right)
    {
        this.Left = left;
        this.Right = right;
    }
}

我找到的唯一可行的例子就是:http://jsfiddle.net/qA8QX/

1 个答案:

答案 0 :(得分:0)

我知道这是一个老问题,但万一有人有同样的要求:

您需要在更改模型后刷新网格:

$("#Grid").data("kendoGrid").refresh();