ASP.Net c# - Kendo Grid - 带UIHint的ValueObject< - 需要是动态的

时间:2017-10-09 06:34:02

标签: c# asp.net dynamic kendo-ui

我对ASP.Net,C#和Kendo的土地有点新鲜。

我需要使用一些东西而不是UIHint("someEditorTemplate")来获取动态值。我们对这些UIHints的使用主要是做一个KendoDropDown来显示一个选择来填充表单上的字段。

我正在处理的应用有KendoGrids指定了查看对象:

<%
        Html.Kendo().Grid<NoiNlsConsignmentVO>()
           .Name("grdSubSpecies")
           .ToolBar(...)
           .DataSource(ds => ds
                   ...
                   .Read(r => r.Action("GridSelectSubSpecies", "RefData").Data("getSelectedSpecies"))
           ...
           .Editable(e => e.Mode(Kendo.Mvc.UI.GridEditMode.PopUp))
           .Render() %>

NoiNlsConsignmentVO如下。由于网格上的Editable属性,弹出一个Dialog,允许用户创建/编辑VO中指定的字段。

namespace Daff.Lae.TraceCommon.ValueObjects
{
    [DataContract]
    [Serializable]
    public class NoiNlsConsignmentVO: BaseTraceVO
    {
        [DataMember, ScaffoldColumn(false)]
        public Int32 NoiId { get; set; }

        [DataMember, Required, Display(Name = "Breed", Order = 1)]
        public String BreedCode { get; set; }

        [DataMember, Display(Name = "Description")]
        public String Description { get; set; }

        [DataMember, UIHint("NlsSubSpecies", null, "NoiId", NoiId)]
        public String Species{ get; set; }
        ...

我想要的是UIHint(&#34; Species&#34;)从此VO获取NoiId的动态值。你看,我已经尝试过了。

然而,这并不起作用,而且从我读过的UIHints中只能获取静态值。

我可以使用什么机制来实现这一点,以便我可以传递NoiId的值?

1 个答案:

答案 0 :(得分:0)

我正以错误的方式思考它。当你使用那些在幕后做很多魔术的框架时经常会发生这种情况。

我通过在.Data(javascript_function)中指定的the_template添加UIHint(the_template)来修复此问题。 The_Template为NlsSubSpecies.ascx

<%:
    Html.Kendo().DropDownList().Name("ddlNlsSubSpecies")
           .DataTextField("Text")
           .DataValueField("Value")
           .DataSource(source =>
           {
               source.Read(read =>
               {
                   read.Action("GetNLSSubSpecies", "RefData").Data("getSpecies");
               });
           })
           .Events(ev => ev.DataBound("setDefaultValue"))
%>

在相关的.ascx文件中:

<script type="text/javascript">
    function getSpecies() {
        let species = { species: '<%=Model.SpeciesCode%>' };
        return species;
    }
</script>

RefDataController.cs

public JsonResult GetNLSSubSpecies(String species)
{
    ...

最后(或首先),(in)ViewObject / template:

[DataMember, UIHint("NlsSubSpecies")]
public String Species{ get; set; }