0

希望這會有一個簡單的答案。Telerik-MVC Grid顯示財產值與編輯值

使用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作爲FK屬性Person實體和個人導航性能導航到物體。這裏是我的視圖控制器:

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

很瑣碎。我將這些列添加到網格和正常編輯模式等視圖中,但對於PersonId屬性。

問題關於COLUMNS:如何獲取select(normal)模式以顯示model.Person.Name,但在編輯model.PersonId時保持編輯模式?爲了模型綁定的目的,我需要HTTP post來發送PersonId。

幫助!

回答

0

簡單

如果你需要的是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) 
      } 
     }); 
    } 
}