Выражение ClientTemplate для включения условного JavaScript - PullRequest
0 голосов
/ 11 октября 2018

Уже давно используем Kendo UI MVC, и нужно поставить условную логику на флажок, который находится в одном поле сетки.

Поля в сетке, которые необходимо оценить,

Отойдя от примера здесьhttps://docs.telerik.com/aspnet-mvc/helpers/grid/faq#how-to-display-checkboxes-in-ajax-bound-grids

columns.Bound(p => p.ProductName).ClientTemplate(
    "# if (HasIcon == true) { #" +
        "<img src='" + Url.Content("~/Content/icons/") + "#= ProductID #.png' alt='#= ProductName # icon' />" +
    "# } else { #" +
        "#: ProductName #" +
    "# } #"
);

Как отформатировать тест в условном выражении для использования значения поля сетки?напримертестирование, если ProductID является определенным значением, подобным этому?

columns.Bound(p => p.ProductName).ClientTemplate(
    "# if (#= ProductID # == 123) { #" +
        "<img src='" + Url.Content("~/Content/icons/") + "#= ProductID #.png' alt='#= ProductName # icon' />" +
    "# } else { #" +
        "#: ProductName #" +
    "# } #"
);

1 Ответ

0 голосов
/ 18 октября 2018

из-за иногда сложной природы клиентских шаблонов, я лично склонен использовать метод функции javascript columns.Bound(p => p.ProductName).ClientTemplate("#= getProductIcon(data, Url.Content("~/Content/icons/")#);

, а затем в блоке js-скрипта

function getProductIcon(data, imgUrl) {
   if (data.ProductID == 123)
      return "<img src='" + imgUrl + data.ProductID + ".png' alt='" + data.ProductName + " icon' />";
   else
      return data.ProductName;
}

просто убедитесь, что вашскрипт загружается до того, как будет создан экземпляр сетки, иначе вы столкнетесь с getProductIcon undefined или с подобной ошибкой.Кроме того, проще включить отладчик для функции javascript и реально посмотреть, что происходит, и проверить ввод / вывод данных.

Извините за любые опечатки в приведенном выше, я не в том месте, где я могу проверитьсинтаксис бритвы на данный момент.

...