我需要一个带有组合框的Telerik MVC网格(在编辑模式下),该网格根据每行的标准填充。因此,当我在一行上单击编辑时,生成的组合框将包含与其他行中的转换器组合框不同的项目。我认为这行应该按需加载,但我无法弄清楚如何在没有编辑器模板的情况下在网格中创建组合框。看起来我无法将参数传递给编辑器模板。
以下是此用例: 想象一下,我有一个网格中带有翻译器的语言列表。编辑每一行时,翻译器组合框将仅显示该特定语言的翻译器。所以法语会有一个名字像Pierre,Francois和Jacque的翻译组合框,但西班牙语会有像Jose,Mario和Pierre这样的名字,因为他说法语和西班牙语。
有关如何使用Telerik MVC Grid和Combobox实现此目的的任何想法?
提前致谢, 史蒂夫
更新 阿塔纳斯, 你有机会提供一个有效的例子吗?我收到错误。这是我的基于您的代码的JavaScript:
function TaskGrid_OnEdit(e)
{
var combobox = $(e.row).find("#ComboBoxId").data("tComboBox");
//var values = getValuesForDataItem(e.dataItem); // get the values for the current data item
var values =
[
{ Text:"Product 1", Value:"1" },
{ Text:"Product 2", Value:"2" },
{ Text:"Product 3", Value:"3" },
];
combobox.dataBind(values); // fill the combobox
}
这是编辑器模板,我不会将它绑定到任何地方:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<Model.Data.tblJobTask>" %>
<%: Html.Telerik().DropDownListFor(s => s.SupplierID).Name("ComboBoxId") %>
顺便说一句,编辑器模板中的模型不会映射到解决方案中的任何模型。模型是否应该映射到您正在填充组合的数据或填充网格的列表模型?
史蒂夫
答案 0 :(得分:1)
要在网格中嵌入组合框,您可以检查this代码库项目(只需用组合框替换下拉列表)。您仍然需要使用编辑器模板。 为了使用特定于当前行的值填充组合框,您可以使用网格的OnEdit事件。在那里,您可以使用其dataBind方法设置组合框(将其绑定到客户端)或调用其reload方法以使用ajax填充它。这是一些代码:
function Grid_onEdit(e) {
var combobox = $(e.row).find("#ComboBoxId").data("tComboBox");
var values = getValuesForDataItem(e.dataItem); // get the values for the current data item
combobox.dataBind(values); // fill the combobox
}