Kendo Grid, Показать другой шаблон в подробной сетке в зависимости от состояния

Я использую сетку кендо, и она работает нормально. Мне нужно проверить каждую строку моей сетки, чтобы, если она содержит определенное значение, связать данные с использованием одного шаблона, иначе шаблон будет другим. Это возможно ? Вот мой код

function detailInit(e) {
        var isCreateGrid = true;
        var masterRowId = e.data.uid;
        var data = [];
        $.ajax({
            type: "GET",
            url: 'https://www.domain.com/details?&transactionId=' + e.data.TransactionId,
            contentType: "application/json; charset=utf-8",
            dataType: 'json',
            headers: { 'ccode': compCode },
            cache: false,
            async: false,
            success: function (result) {
                var jsonResult = JSON.parse(result);
                for (var i = 0; i < jsonResult.length; i++) {
                    if (jsonResult[i]["OldValue"] == null || jsonResult[i]["OldValue"] == '')
                        isCreateGrid = true;
                    else {
                        isCreateGrid = false;
                        break;
                    }
                }
                if (isCreateGrid) {
                    for (var i = 0; i < jsonResult.length; i++) {
                        data.push({ FieldUpdated: jsonResult[i]["ChangeColumns"], Value: jsonResult[i]["NewValue"] });
                    }
                } else {
                    for (var i = 0; i < jsonResult.length; i++) {
                        data.push({ FieldUpdated: jsonResult[i]["ChangeColumns"], Was: jsonResult[i]["OldValue"], Now: jsonResult[i]["NewValue"] });
                    }
                }
            }
        });
        var dataSource = new kendo.data.DataSource({ data: data });
        if (data.length == 0) {
            var grid = $("#logs").data("kendoGrid");
            grid.collapseRow("[data-uid='" + masterRowId + "']");
            grid.dataSource.read();
        } else {
            if (isCreateGrid) {
                $("<div/>").appendTo(e.detailCell).kendoGrid({
                    dataSource: dataSource,
                    filter: { field: e.data.Log, operator: "contains", value: 'has created' },
                    columns:
                        [{ field: "FieldUpdated", title: "Field Updated", width: "50px" },
                        { field: "Value", title: "Value", width: "50px" }]
                });
            } else {
                $("<div/>").appendTo(e.detailCell).kendoGrid({
                    dataSource: dataSource,
                    filter: { field: e.data.Log, operator: "contains", value: 'has created' },
                    columns:
                        [{ field: "FieldUpdated", title: "Field Updated", width: "50px" },
                        { field: "Was", title: "Was", width: "50px" },
                        { field: "Now", title: "Now", width: "50px" }]
                });

            }
        }
    }

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


person Ancient    schedule 09.02.2015    source источник
comment
вы можете сохранить проверку состояния isCreateGrid для события сетки с привязкой к данным   -  person Nitin Mall    schedule 09.02.2015


Ответы (1)


Да, ты можешь. Пожалуйста, обратитесь к приведенному ниже коду.

  $(gridId).kendoGrid({
    dataSource: {
        data: datasource
    },
    scrollable: true,
    sortable: true,
    resizable: true,
    columns: [
     { field: "MetricName", title: "Metric", width: "130px" },
     { field: "OnTrack", title: "On Track", template:'#:changeTemplate(OnTrack)#', width: "130px", attributes: { style: "text-align: center !important;" } },
     { field: "CurrentAmount", title: "Current", template: '$ #:parseFloat(CurrentAmount).toFixed(2)#', width: "130px" },
     { field: "RequiredAmount", title: "Required", template: '$ #:parseFloat(RequiredAmount).toFixed(2)#', width: "130px" }
    ]
});

function changeTemplate(value)
{
   Conditions depending on Your Business Logic
if ()
    return "HTML Here";
else
    return "HTML Here";
}
person ashutosh jambhale    schedule 10.02.2015
comment
Это сработало для вас ?? тогда не могли бы вы проголосовать? - person ashutosh jambhale; 10.02.2015