KENDO UI ASPNET网格

时间:2015-05-06 08:52:32

标签: kendo-ui kendo-grid kendo-asp.net-mvc

我目前在我的kendo网格中遇到问题。我有多个十进制类型的列。问题是当我想对这些列使用numerictextBox时,我应该为n列创建n个编辑器模板,因为numericTextBox的.Name("")属性。

有没有办法只使用一个通用模板绑定numericTextBox?或者我怎样才能避免创建只有name属性变化的多个editorTemplate文件?

感谢您的帮助。

这是我的网格:

<% Html.Kendo().Grid<myModel>()
.Name("grid")
.Events(events =>
{
    events.Save("onSaveObject");
})
.Columns(columns =>
{
    columns.Bound(r => r.NAME).Title("Name");
    columns.Bound(r => r.SIZE).Title("SIZE").EditorTemplateName("SIZEEditor");
    columns.Bound(r => r.SIZE1).Title("SIZE1").EditorTemplateName("SIZE1Editor");
    columns.Bound(r => r.SIZE2).Title("SIZE1").EditorTemplateName("SIZE2Editor");
    columns.Bound(r => r.SIZE3).Title("SIZE1").EditorTemplateName("SIZE3Editor");
    columns.Bound(r => r.SIZE4).Title("SIZE1").EditorTemplateName("SIZE4Editor");
    columns.Command(command => { command.Edit(); command.Destroy(); }).Width(200);
})
..


%>

SIZEEditor.ascx

<%: Html.Kendo().NumericTextBox<decimal>()
    .Name("SIZE")
    .HtmlAttributes(new { value = "#=SIZE #" })
    .Format("{0:n1}")
    .Culture("fr-FR")
    .Min(0)
    .Max(500)
    .Decimals(1)
%>

SIZE1Editor.ascx

<%: Html.Kendo().NumericTextBox<decimal>()
    .Name("SIZE1")
    .HtmlAttributes(new { value = "#=SIZE1 #" })
    .Format("{0:n1}")
    .Culture("fr-FR")
    .Min(0)
    .Max(500)
    .Decimals(1)
%>

SIZE2Editor.ascx

<%: Html.Kendo().NumericTextBox<decimal>()
    .Name("SIZE2")
    .HtmlAttributes(new { value = "#=SIZE2 #" })
    .Format("{0:n1}")
    .Culture("fr-FR")
    .Min(0)
    .Max(500)
    .Decimals(1)
%>

感谢您的帮助

2 个答案:

答案 0 :(得分:1)

您的编辑器模板指定其名称,因此它将为输入元素而不是动态名称呈现静态名称。

像这样更改您的编辑器模板

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<decimal?>" %>
<%: Html.Kendo().NumericTextBoxFor(m => m)
    .Format("{0:n1}")
    .Culture("fr-FR")
    .Min(0)
    .Max(500)
    .Decimals(1)
%>

答案 1 :(得分:0)

感谢Dio Dirza的帮助。这样做了。我只更改了模板的“Inherits”值。

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<decimal?>" %>

<%: Html.Kendo().NumericTextBoxFor(m=>m)
    .Format("{0:n2}")
    .Culture("fr-FR")
    .Min(-50)
    .Max(100000)
    .Decimals(2)
%>