kendo 网格外栏选择的文本被客户端模板覆盖

kendo grid foreign column selected text being overrriden by client template

我在 MVC proeject 上有一个 kendo 网格,其中有一个 foreignKey 列,同一列上有一个客户端模板,用于将数据发送到控制器(隐藏),因为我在 kendo 我想发送给控制器的网格。一切正常。但是当我 select 网格中的下拉菜单时,它显示的是值而不是文本。

columns.ForeignKey(c => c.studentId, (System.Collections.IEnumerable)ViewData["Students"], "Id", "name").Title("id - name").Width(70)

.ClientTemplate("#= studentId #" + "<'input type='hidden' name='MyModel[#= index(data)#].StudentId' value='#= StudentId #' />");

以上是我目前的确切代码。

如何在 kendo 网格上向用户显示 selected 文本(本例中为名称)而不是值(本例中为 ID)。

谢谢

刚遇到同样的问题并在 telerik site 上发现了这个问题:

基本上创建一个函数,从网格中的外键下拉列表中查找文本。

 columns.ForeignKey(c => c.G_ID, plus, "Value", "Text").Title("Plu").Lockable(true).ClientFooterTemplate("Total").ClientTemplate("#= getTextByValue(data)#" +
        "<input type='hidden' name='Schedules[#= index(data)#].G_ID' value='#= G_ID #' />"); //.Hidden();

和 javascript:

var collection;

以及函数:

function getTextByValue(data) {
    console.log(data);
    var dGrid = $("#the-dtl-grid").data("kendoGrid");
    //change the index of the column with your index
    valuesCollection = dGrid.options.columns[1].values;

    //if the collection is empty - get it from the grid
    if (!collection) {
        collection = {};
        //Set the correct FKColumn index
        for (var value in valuesCollection) {
            collection[valuesCollection[value].value] = valuesCollection[value].text;
        }
    }
    return collection[data.G_ID];
}

谢谢,很有帮助。就我而言,我必须将此行 valuesCollection = dGrid.options.columns[1].values; 更改为 valuesCollection = dGrid.columns[1].values;