首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >kendo ui mvc网格编辑模板问题

kendo ui mvc网格编辑模板问题
EN

Stack Overflow用户
提问于 2013-02-19 18:32:28
回答 1查看 8.6K关注 0票数 1

我想做的是:

  1. 在页面的前半部分,我有一个带有Kendo UI控件的表单,如DatePicker、Dropdownlist列表、NumericTextBox(s)。
  2. 下半部分有一个Kendo网格控件

代码语言:javascript
运行
复制
- This Kendo UI Grid control has 8 columns in which 2 columns has a Kendo dropdownlist(EditorTemplate) and CheckBox(EditorTemplate).
- The Kendo UI Grid control is Ajax binding.

  1. 单击保存按钮时,Kendo UI控件(前半部分)和Kendo UI网格控件(下半部分)的所有值一起通过"Ajax“发布为Json对象。
  2. 我在上面的过程中使用模型绑定

问题或我所面临的问题:

表单的前半部分与其他Kendo控件一起正确地将它们的值提交给控制器,但是由于Kendo在发布一些列值时遇到了一些问题

  • 数据类型为十进制的Kendo网格中的列没有提交值
  • EditorTemplate控件(如CheckBox和kendo下拉列表)在选中时显示下拉列表的值"[Object Object]"和布尔值而不是复选框控件的实际值。
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-20 03:51:55

我怀疑您是否希望将Grid作为表单的一部分。通常,Grid通过ajax进行交互,而不是通过批处理表单提交与其他控件进行交互--将其从表单中展开。光是这一点就能帮你避免头痛。

上半年:

尝试使用Kendo().DatePickerFor()、Kendo().DropDownListFor()等。您不需要通过.Name()显式地命名这些Kendo控件。这将帮助您进行模型绑定。

下半部分:

使用十进制以外的另一种数据类型。你觉得这很难吗?尝试使用TimeSpan类型作为一天的时间,没有日期附加(成年男子哭泣)。

您通常不需要布尔/复选框的EditorTemplate。只需使用这个技巧(因为您没有留下代码,所以您正在使用Razor )。

代码语言:javascript
运行
复制
columns.Bound(b => b.IsActive).ClientTemplate("<input type='checkbox' ${ IsActive == true ? checked='checked' : ''} disabled />");

网格DDL的最佳选择是

代码语言:javascript
运行
复制
columns.ForeignKey(b => b.CustodianIdPrimary, Model.Custodians, "Id", "FullName").EditorViewData(new {ProjectId = Model.ProjectId}).EditorTemplateName("CustodianDropDownList");

其中Model.Custodians是所有可能项的列表。然后,您可以将您的EditorTemplate绑定到此列表,或者在需要此特定DDL中的子集时进行ajax调用以填充,如下所示

代码语言:javascript
运行
复制
@model int
@(Html.Kendo().DropDownList()
    .Name(ViewData.TemplateInfo.GetFullHtmlFieldName(""))
    .DataValueField("Id")
    .DataTextField("FullName")
    .OptionLabel("Unassigned")
    .DataSource(dataSource => dataSource
        .Read(read => read.Action("ReadProjectCustodiansDdl", "SysMaint", new {projectId = ViewData["ProjectId"]}))
    )
)

但是下面是Kendo提供的例子

代码语言:javascript
运行
复制
@model object       
@(
    Html.Kendo().DropDownListFor(m => m)        
        .BindTo((SelectList)ViewData[ViewData.TemplateInfo.GetFullHtmlFieldName("") + "_Data"])
)

注意EditorViewData参数在我的初始columns.ForeignKey中的使用,这个参数在这个示例中用于传递整个列表。

祝好运!

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14964838

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档