Nach der Situation mit ein wenig mehr Wissen über MVC bewerten, fand ich eine signficant bessere Lösung, eine Erweiterungsmethode mit:
public static class KendoExtensions
{
public static GridTemplateColumnBuilder<TModel> DestroyConditional<TModel>(this GridColumnFactory<TModel> factory, Expression<Func<TModel, bool>> expression)
where TModel : class
{
var template = "# if (" + ExpressionHelper.GetExpressionText(expression) +") { # <a class=\"k-button k-button-icontext k-grid-delete\"><span class=\"k-icon k-delete\"></span>" + TextStrings.Delete + "</a># } #";
return factory.Template(e => "").ClientTemplate(template).Title("");
}
}
Fühlen Sie sich frei TextStrings.Delete
, was auch immer Sie sich wohl fühlen zu ersetzen. Es ist einfach meine T4 Lokalisierungslogik.
Jetzt in Ihrem Raster Definition ist es wirklich einfach:
.Columns(columns =>
{
columns.DestroyConditional(c => c.CanBeDeleted).Width(120);
}))
Haben Sie in diesem http://stackoverflow.com/a/19840309/1876572 suchen – Eldho
@Eldho, ja, ich habe einen Blick auf sie genommen. Es scheint aber so zu sein, dass dies alle Zeilen auf der Serverseite deaktiviert/aktiviert. Mein Anliegen ist die Clientseite basierend auf den Daten, nicht das ViewBag/ViewModel. –
Werfen Sie auch einen Blick auf diese http://www.telerik.com/forums/how-do-i-conditional-set-the-visibility-of-the-command-edit-button-on-a-row-by -rower-Basis- – Eldho