2015-01-15 218 views
1

嗨我是新的Kendo UI网格与ASP.Net MVC剃须刀,我想创建一个3列网格与第一列是不可编辑的,其他两个是可编辑的数字文本输入,这是我现在与我的代码,还有什么补充?会像.Editable(编辑=> editable.Mode(GridEditMode.InLine))的帮助,但如何让阅读第一列仅可编辑网格Kendo UI Asp.Net MVC

@Html.Kendo().Grid(Model.CpfPayableYearlyDetail.CpfPayableMonthlyDetails).Name("CpfPayableMonthlyDetails").Columns(columns => 
     { 
      columns.Bound(p => p.Month).Title("Month"); 
      columns.Bound(p => p.OrdinaryWagePaid).Title("Ordinary Wages (OW)"); 
      columns.Bound(p => p.AdditionalWagePaid).Title("Additional Wages (AW)"); 
     }) 

我有点想出如何做到这一点

@Html.Kendo().Grid(Model.CpfPayableYearlyDetail.CpfPayableMonthlyDetails).Name("CpfPayableMonthlyDetails").Columns(columns => 
     { 
      columns.Bound(p => p.Month).Title("Month"); 
      columns.Bound(p => p.OrdinaryWagePaid).Title("Ordinary Wages (OW)").ClientTemplate(Html.Kendo().NumericTextBox().Name("OW").ToClientTemplate().ToHtmlString()); 
      columns.Bound(p => p.AdditionalWagePaid).Title("Additional Wages (AW)").ClientTemplate(Html.Kendo().NumericTextBox().Name("AW").ToClientTemplate().ToHtmlString()); 
     }).Editable(editable => editable.Mode(GridEditMode.InCell)).DataSource(dataSource => dataSource 
      .Ajax().Model(model => model.Id(m => m.Month))) 

但没有从数据源中的值没有得到绑定到editbale列的问题/细胞

+0

您是新的......所以让我给你一个建议...切换到剑道的JavaScript SDK ...它会给你少头疼,它会让您更好地控制所有功能。我不想看到你浪费时间让剃刀工作......考虑到你编码的剃刀,剑道会生成JavaScript并将它注入到你的页面中。 –

+0

不能同意你的看法!但使用剃刀是我现在的约束条件 – Abhilash

+0

约束?解释...相同的剃须刀东西可以在JS中重新编写。 –

回答

1

一些研究之后是它是如何工作

@(Html.Kendo().Grid(Model.CpfPayableMonthlyDetails) 
    .Name("CpfPayableMonthlyDetails") 
    .Editable(editable => editable.Mode(GridEditMode.InCell)) 
    .Columns(columns => 
    { 
     columns.Bound(p => p.Month).ClientTemplate("#= Month #" + 
      "<input type='hidden' name='CpfPayableMonthlyDetails[#= index(data)#].Month' value='#= Month #' />" 
     ); 
     columns.Bound(p => p.OrdinaryWagePaid).ClientTemplate("#= OrdinaryWagePaid #" + 
      "<input type='hidden' name='CpfPayableMonthlyDetails[#= index(data)#].OrdinaryWagePaid' value='#= OrdinaryWagePaid #' />" 
     ).ClientFooterTemplate("#=sum#"); 
     columns.Bound(p => p.AdditionalWagePaid).ClientTemplate("#= AdditionalWagePaid #" + 
      "<input type='hidden' name='CpfPayableMonthlyDetails[#= index(data)#].AdditionalWagePaid' value='#= AdditionalWagePaid #' />" 
     ).ClientFooterTemplate("#=sum#"); 
    }) 
.DataSource(dataSource => dataSource.Ajax() 
    .Model(m => 
    { 
     m.Id(p => p.Month); 
     m.Field(p => p.Month).Editable(false); 
     m.Field(p => p.OrdinaryWagePaid).Editable(true); 
     m.Field(p => p.AdditionalWagePaid).Editable(true); 
    }) 
    .Batch(true) 
     .ServerOperation(false).Aggregates(aggregates => 
          { 
           aggregates.Add(p => p.OrdinaryWagePaid).Sum(); 
           aggregates.Add(p => p.AdditionalWagePaid).Sum(); 
          }) 
)) 

和JS一丁点儿

function index(dataItem) { 
    var data = $("#CpfPayableMonthlyDetails").data("kendoGrid").dataSource.data(); 
    return data.indexOf(dataItem); 
} 
相关问题