Utilizing a template is essential for this task.
Within your model, add another field that corresponds to the name (make sure to update it with the correct value), then implement a template similar to
"#=name#
To begin, create your column in the following manner:
columns.Bound(x => x.ForeignKey).ClientTemplate("#=Name#");
In the Update method within your controller, assign the desired Name property to the view model.
viewModel.Name = GetName(viewModel.ForeignKey);
return this.Json(new[] { viewModel }.ToDataSourceResult(request, this.ModelState));
Update 2:
When constructing the grid in JavaScript mode, define the column like so:
{ field: "ForeignKey", title: "Foreign Key", template: '#=Name#', editor: myEditor}
Then, specify your editor as follows:
function myEditor(container, options) {
$('<input required data-text-field="ForeignKeyName" data-value-field="ForeignKey" data-bind="value:' + options.field + '"/>')
.appendTo(container)
.kendoDropDownList({
autoBind: false,
dataSource: myDataSource
});
}
You may still need to set the value accordingly. For server-side execution, follow the method mentioned above. If opting for client-side implementation, handle the grid save event and set the value in the data source there.
I hope this guidance proves beneficial.