asp.net mvc-剑道ui mvc网格编辑器模板问题



我要做的事情:

  1. 我有一个带有Kendo UI控件的表单,如页面的前半部分的DatePicker、Dropdownlist、NumericTextBox

  2. 下半场有一个剑道UI MVC网格控制

    • 这个Kendo UI网格控件有8列,其中2列有一个Kendo dropdownlist(EditorTemplate)和CheckBox(EditorTemplate)
    • Kendo UI网格控件是Ajax绑定
  3. 当单击保存按钮时,Kendo UI控件(前半部分)和Kendo UI网格控件(后半部分)中的所有值都将通过"Ajax Post"作为Json对象发布到控制器。

  4. 我使用模型绑定进行上述过程

问题或我面临的问题:

表单的前半部分和其他Kendo UI控件正在将它们的值正确地发布到控制器,但由于Kendo UI网格在发布一些列值时遇到了一些问题

  • Kendo UI网格中数据类型为decimal的列没有发布值

  • EditorTemplate控件(如CheckBox和kendo下拉列表)在选中时显示dropdownlist的值"[Object Object]"和布尔值的实际值,而不是复选框控件。

我怀疑你是否希望将网格作为表单的一部分。通常,网格通过ajax进行交互,而不是通过与其他控件的批量表单提交进行交互-从表单中打开它。仅此一点可能会让你头疼。

上半场:

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

下半场:

使用十进制以外的其他数据类型。你觉得这很难吗?试着用TimeSpan类型来表示一天中没有日期的时间(成年男子会哭)。

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

columns.Bound(b => b.IsActive).ClientTemplate("<input type='checkbox' ${ IsActive == true ? checked='checked' : ''} disabled />");

你的网格DDL的最佳选择是

columns.ForeignKey(b => b.CustodianIdPrimary, Model.Custodians, "Id", "FullName").EditorViewData(new {ProjectId = Model.ProjectId}).EditorTemplateName("CustodianDropDownList");

其中,模型保管人是所有可能项目的列表。然后,您可以将EditorTemplate绑定到此List,或者如果您需要此特定DDL中的子集(如),则可以调用ajax进行填充

@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提供的示例

@model object       
@(
    Html.Kendo().DropDownListFor(m => m)        
        .BindTo((SelectList)ViewData[ViewData.TemplateInfo.GetFullHtmlFieldName("") + "_Data"])
)

请注意在我的初始列中使用了EditorViewData参数。ForeignKey,用于传递整个列表。

祝你好运!

相关内容

  • 没有找到相关文章

最新更新