Asp.net mvc 可编辑网格剑道用户界面Asp.NETMVC
您好,我是ASP.Net MVC razor的剑道UI网格新手,我正在尝试创建一个3列网格,第一列是不可编辑的,另外两列是数字文本输入可编辑的,这是我现在随身携带的代码,还需要添加什么?像.Editable(Editable=>Editable.Mode(GridEditMode.InLine))这样的东西会有帮助,但是如何使第一列成为只读Asp.net mvc 可编辑网格剑道用户界面Asp.NETMVC,asp.net-mvc,kendo-ui,kendo-grid,Asp.net Mvc,Kendo Ui,Kendo Grid,您好,我是ASP.Net MVC razor的剑道UI网格新手,我正在尝试创建一个3列网格,第一列是不可编辑的,另外两列是数字文本输入可编辑的,这是我现在随身携带的代码,还需要添加什么?像.Editable(Editable=>Editable.Mode(GridEditMode.InLine))这样的东西会有帮助,但是如何使第一列成为只读 @Html.Kendo().Grid(Model.CpfPayableYearlyDetail.CpfPayableMonthlyDetails).Name
@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列/单元格经过一些研究,这就是它的工作原理
@(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();
})
))
你是新来的。。。所以让我给你一个建议。。。切换到剑道的JavaScript SDK。。。它会让你不那么头疼,也会让你更好地控制所有的功能。我不想看到你浪费时间去做剃须刀。。。考虑到你编写的是剃刀一样的东西,kendo将生成javascript并将其注入到你的页面中!但是剃须刀的使用是我现在的一个限制?解释。。。同样的东西可以在短时间内用JS重新编写。
function index(dataItem) {
var data = $("#CpfPayableMonthlyDetails").data("kendoGrid").dataSource.data();
return data.indexOf(dataItem);
}