ric*_*.au 6 c# telerik razor kendo-asp.net-mvc
嗨,我正在Kendo MVC Razor子模板中进行编辑,我需要为父项设置项目ID的默认值。如果我尝试设置的属性是字符串,则可以使用,但是如果它是int,则不能使用。请参阅下面的代码中的注释。如果无法执行此操作,请有人提出解决方法吗?谢谢。
@using Harpoon.DomainLogic
@using Kendo.Mvc.UI
@{
ViewBag.Title = "Index";
}
<h2>Index</h2>
@(Html.Kendo().Grid<UserStandardCodeType>().Name("grid")
.DataSource(dataSource => dataSource.Ajax().Read(read => read.Action("GetUserStandardCodesTypes_Ajax", "UserStandardCode")))
.Columns(columns =>
{
columns.Bound(usct => usct.InternalCode);
columns.Bound(usct => usct.PresentationName);
columns.Bound(usct => usct.Description);
})
.ClientDetailTemplateId("client-template")
)
<script id="client-template" type="text/x-kendo-template">
@(Html.Kendo().Grid<UserStandardCode>().Name("grid_#=Id#") // make sure the Name is unique
.Columns(columns =>
{
columns.Bound(usc => usc.InternalCode);
columns.Bound(usc => usc.PresentationName);
columns.Bound(usc => usc.Description);
columns.Bound(usc => usc.IsEnabled);
columns.Command(commands =>
{
commands.Edit();
commands.Destroy();
}).Title("Commands").Width(200);
})
.DataSource(dataSource => dataSource.Ajax()
.Read(read => read.Action("GetUserStandardCodes_Ajax", "UserStandardCode", new { CodeTypeId = "#=Id#" }))
.PageSize(2)
.Model(model =>
{
model.Field(usc => usc.CodeTypeId).DefaultValue("#=Id#"); // this line fails converting from string to int
model.Id(usc => usc.Id); // specify the unique id column
})
.Create(create => create.Action("CreateUserStandardCode_Ajax", "UserStandardCode"))
.Update(update => update.Action("UserStandardCodes_Ajax", "UserStandardCode"))
.Destroy(destroy => destroy.Action("UserStandardCodes_Ajax", "UserStandardCode"))
)
.Pageable()
.ToolBar(toolbar => toolbar.Create())
.Editable(editable => editable.Mode(GridEditMode.InLine))
.ToClientTemplate()
)
</script>
Run Code Online (Sandbox Code Playgroud)
尝试添加JavaScript函数来处理Save事件
.Events(e => e.Save("save"))
Run Code Online (Sandbox Code Playgroud)
为了设置父ID:
function save(e) {
var parentGrid = $("#grid").data("kendoGrid");
var parentRow = e.container.closest(".k-detail-row").prev(".k-master-row");
var parentDataItem = parentGrid.dataItem(parentRow);
e.model.set("CodeTypeId", parentDataItem.Id);
}
Run Code Online (Sandbox Code Playgroud)
您可以尝试使用 JavaScript 函数 parseInt 将字符串转换为 int。Kendo UI“DefaultValue”的工作方式与 ClientTemplate 类似。有一些额外的逻辑来检查 null,这样您就不会收到 JavaScript 错误。
// Use JavaScript parseInt to transform the field from string to int
model.Field(usc => usc.CodeTypeId).DefaultValue("#= Id != null ? parseInt(Id) : 0 #");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5054 次 |
| 最近记录: |