2014-05-06 248 views
2

我正在嘗試使計算列的網格。 我的問題是,當我更改網格時不重新計算列。劍道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); 
     } 
    } 

流量(C#類中調用):

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/

回答

0

我知道這是一個老問題,但萬一有人有相同的要求:

需要刷新電網一旦你已經修改了模型:

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