繁体   English   中英

Telerik-MVC网格显示属性值与编辑值

[英]Telerik-MVC Grid Display value of property versus edit value

希望这将有一个简单的答案。

使用MVC3,我将POCO对象的简单列表作为模型传递给我的视图:

public partial class PeopleAddress
{
    public int Id { get; set; }
    public string Address1 { get; set; }
    public string Address2 { get; set; }
    public string City { get; set; }
    public string State { get; set; }
    public string Zip { get; set; }
    public int PersonId { get; set; }

    public virtual Person Person { get; set; }
}

我将PeopleId用作Person实体的FK属性,并使用Person导航属性导航到该对象。 这是我的视图控制器:

public ViewResult Index()
    {
        var peopleaddresses = db.PeopleAddresses.Include("Person");
        return View(peopleaddresses.ToList());
    }

很琐碎。 我在视图中将列添加到网格和常规编辑模式等中,但添加了PersonId属性。

关于列的问题:如何获得选择(正常)模式以显示model.Person.Name,但将编辑模式保持在编辑model.PersonId上? 出于模型绑定的目的,我需要HTTP帖子来发送PersonId。

救命!

简单

如果您只需要在单击Edit时使用Person.Id(即在网格之外进行编辑或其他操作),那么就是这么简单。 您的专栏将是:

columns.Bound(e => e.Person).Title("Person").ClientTemplate("<#= Person ? Person.Name : '' #>");

您可以为该人获取ID:

onEdit(e) {
    var personId = e.dataItem['Person'].Id;
}

充分

但是,如果您尝试使用组合框在网格中进行编辑,则您的列应如下所示:

columns.Bound(e => e.Person).Title("Person").ClientTemplate("<#= Person ? Person.Name : '' #>").EditorTemplateName("PersonSelector");

您的编辑器模板:

@(Html.Telerik().ComboBox()
.Name("YourNameGoesHere")
.DataBinding(binding => binding.Ajax().Select("SelectPeopleForComboBox","Shared")))

您的客户端脚本:

onEdit(e){
    $comboBox = $(e.cell).find('#Person');
    if($comboBox.length > 0) {
        var comboBox = $ddl.data('tComboBox');
        comboBox.fill(function(){
            if (e.dataItem['Person'] != null){
                    ddl.value(e.dataItem['Person'].Id)
            }
        });
     }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM