2012-01-20 53 views
1

我正在使用Telerik MVC Grid,并使用ajax绑定,并使用带有编辑器模板的InCell编辑模式进行网格编辑。我想将模型传递给编辑。如何将模型传递给编辑器模板

我知道如果我使用了服务器绑定,可以将模型传递给编辑器模板。但我不确定Ajax绑定。

当您使用Ajax绑定时,是否可以将模型传递给编辑器模板?

+0

您能否详细说明您想要传递的模型 – Tassadaque

+0

假设我想通过列表作为编辑器模板中的下拉列表的模型 – adyusuf

回答

1

是的,你可以!它会自动完成。只要你的模板编辑器是一个列表框,你应该通过ViewBag.XXX属性传递列表项。 这里是ProductSelector.ascx编辑模板的一个例子:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<int>" %> 

<%Html.Telerik().ComboBox() 
     .Name(ViewData.TemplateInfo.GetFullHtmlFieldName(string.Empty)) 
     .AutoFill(true) 
      .BindTo(((IEnumerable<Aien.CRM.Biz.Entities.Product>)ViewBag.PossibleProducts).Select(option => new SelectListItem 
      { 
       Text = (option == null ? "(None)" : option.Title), 
       Value = option.Id.ToString() 
      })) 
     .OpenOnFocus(true) 
     .Render(); 

%> 

不要忘了把UiHint属性的相关模型属性。

+0

好主意,但是没有其他方式可以传递模型到编辑器模板或直接从编辑器模板访问它? – adyusuf

+0

将整个模型传递给编辑器模板?为什么?你可以将它传递给编辑器模板,就像你为“int”所做的一样。但是如果你这样做了,你的编辑器模板应该是整个模型的编辑器,而不仅仅是它的一个属性。 –

+0

另请参阅:http://stackoverflow.com/a/16065740/85269。我还想要一个方法,它涉及到能够将模型对象直接传递给模板,例如“部分(...)”调用。但是,这个选项似乎并没有被内置到MVC中,只剩下'ViewBag'作为剩下的选项。 –

0

Telerik Mvc Grid的新功能叫做ForeignKey,它允许您对编辑器模板进行抽象并简单地将其提供给SelectList(或IEnumerable)。 Here就是一个例子。

columns.ForeignKey(o => o.EmployeeID, (IEnumerable)ViewData["employees"], 
        "ID", "Name").Width(230); 

默认情况下,它使用下拉列表,您可以通过客户端模板更改该列表。

相关问题