Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 剑道mvc编辑器未绑定到选定的下拉属性_Asp.net Mvc_Kendo Grid - Fatal编程技术网

Asp.net mvc 剑道mvc编辑器未绑定到选定的下拉属性

Asp.net mvc 剑道mvc编辑器未绑定到选定的下拉属性,asp.net-mvc,kendo-grid,Asp.net Mvc,Kendo Grid,使用来自剑道网格(v 2017.3.913)的内联编辑,下拉列表中使用的编辑器模板未使用属性id设置列表中的选定值(或这是另一个问题,但相关) 我尝试了一些类似问题的解决方案,但都没有达到预期的效果 剑道格网 编辑器模板 最后,dropdownlist使用的数据: var orgSelectList = organizations.Select(n => new SelectListItem { Text = n.Name,

使用来自剑道网格(v 2017.3.913)的内联编辑,下拉列表中使用的编辑器模板未使用属性id设置列表中的选定值(或这是另一个问题,但相关)

我尝试了一些类似问题的解决方案,但都没有达到预期的效果

剑道格网 编辑器模板 最后,dropdownlist使用的数据:

var orgSelectList = organizations.Select(n => new SelectListItem
            {
                Text = n.Name,
                Value = n.Id.ToString()
            }).ToList();

ViewData["OrganizationSelectList"] = new SelectList(orgSelectList, "Value", "Text");
注 我还尝试使用“Id”和“Name”创建一个SelectList(将更改传播到编辑器,并替换“Value”和“Text”),这样它就可以与
ParentOrganization
对象对齐,但最终生成了“未定义”的列表项

orgSelectItems.AddRange(organizations.Select( n => new BaseSelectItem
{
      Id = n.Id,
      Name = n.Name
}));

ViewData["OrganizationSelectList"] = new SelectList(orgSelectList, "Id", "Name");

这就是我在剑道下拉列表中输入和输出数据的方式

@(Html.Kendo().DropDownList()
              .Name("showProcessed")
              .DataTextField("OptionText") 
              .DataValueField("ViewOption")
              .AutoBind(true)
              .SelectedIndex(2)
              .Events(e => e.Change("fe_DiaryItem.processedChange"))
              .HtmlAttributes(new { style = "width: 250px;" })
              .DataSource(ds =>
              {
                 ds.Read("DiaryGridViewOptions", "ControllerName");
              })
)
在本例中,我使用数据源填充对象,并使用.SelectedIndex(x)选择索引

如果需要,我还有其他一些例子来说明如何设置索引,但这是一个实用的生产代码

----编辑----


似乎[剑道或MVC助手本身]不喜欢您使用“适当的”[域]对象-似乎混淆了绑定。我认为根本原因是属性名称相同(Id和名称),需要不同。我使用域对象
组织
作为属性的类型。我创建了另一个viewmodel来表示组织,并使用了不同的属性名称:

表示组织的新viewmodel 我没有使用“Id”和“Name”作为映射文本和值属性,而是使用以下“ParentOrganization-x”属性:

public class ParentOrganizationViewModel
{
    public int? ParentOrganizationId { get; set; }
    public string ParentOrganizationName { get; set; }
}
因此,网格视图模型的更新将反映新的组织视图模型:

public class OrganizationGridViewModel
{
     ...

     [UIHint("ParentOrganization")]
     public ParentOrganizationViewModel ParentOrganization { get; set; }
}
@(Html.Kendo().DropDownList()
     .Name("ParentOrganization")
     .DataTextField("ParentOrganizationName")
     .DataValueField("ParentOrganizationId")
     .AutoBind(true)
     .ValuePrimitive(true)
     .BindTo((IEnumerable) ViewData["OrganizationSelectList"])
)    
此外,它不是将
SelectList
作为数据源返回下拉列表,而是直接的viewlmodel列表:

var orgSelectList = organizations.Select(n => new ParentOrganizationViewModel()
{
    ParentOrganizationName = n.Name,
    ParentOrganizationId = n.Id
}).ToList();

ViewData["OrganizationSelectList"] = orgSelectList;
最后的更改在编辑器模板中,以更改
DataTextField
DataValueField
属性与组织视图模型匹配:

public class OrganizationGridViewModel
{
     ...

     [UIHint("ParentOrganization")]
     public ParentOrganizationViewModel ParentOrganization { get; set; }
}
@(Html.Kendo().DropDownList()
     .Name("ParentOrganization")
     .DataTextField("ParentOrganizationName")
     .DataValueField("ParentOrganizationId")
     .AutoBind(true)
     .ValuePrimitive(true)
     .BindTo((IEnumerable) ViewData["OrganizationSelectList"])
)    

@Simon_Price您是如何获得SelectedIndex值的?这将是一个动态值,因为每行都有自己的选择previously@WillLopez看看编辑,它会显示第二个下拉列表,以及我如何获得索引值
var orgSelectList = organizations.Select(n => new ParentOrganizationViewModel()
{
    ParentOrganizationName = n.Name,
    ParentOrganizationId = n.Id
}).ToList();

ViewData["OrganizationSelectList"] = orgSelectList;
@(Html.Kendo().DropDownList()
     .Name("ParentOrganization")
     .DataTextField("ParentOrganizationName")
     .DataValueField("ParentOrganizationId")
     .AutoBind(true)
     .ValuePrimitive(true)
     .BindTo((IEnumerable) ViewData["OrganizationSelectList"])
)